Búsqueda de sitios web

node.js - ¿Cómo puedo usar commander (npm) con TypeScript?


Tengo el siguiente código en mi aplicación:

import commander = require('commander');

commander
  .option('-u, --user [user]', 'user code')
  .option('-p, --pass [pass]', 'pass code')
  .parse(process.argv);

Entonces intento acceder a:

commander.user

Pero recibo un error (commander.d.ts de DefinitelyTyped):

user does not exist on type IExportedCommand

Intenté agregar esto

interface IExportedCommand {
  user: string;
  pass: string;
}

Pero todavía recibo el error. ¿Cómo puedo arreglar esto?

Respuesta #1

También puedes hacer:

npm install --save-dev @types/commander

EDITAR: Commander ahora incluye sus propias definiciones de TypeScript, por lo que esto ya no debería ser necesario.

Respuesta #2

Crea un archivo commander-expansion.d.ts con lo siguiente :

declare namespace commander {
    interface IExportedCommand extends ICommand {
        user: string; 
        pass: string;
    }
}

Consejo

Porque hice algo como esto recientemente, recomiendo --auth usuario:contraseña. Te ahorra lidiar con el usuario que falta el nombre de usuario o la contraseña. Pero evita usar : como propiedad de la contraseña

¯\_(ツ)_/¯

Más: https://github.com/alm-tools/alm/blob/master/src/server/commandLine.ts#L24

Artículos relacionados