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
