node.js - Hur kan jag använda commander (npm) med TypeScript?
Jag har följande kod i min app:
import commander = require('commander');
commander
.option('-u, --user [user]', 'user code')
.option('-p, --pass [pass]', 'pass code')
.parse(process.argv);
Sedan försöker jag att få åtkomst till:
commander.user
Men jag får ett fel (commander.d.ts från DefinitelyTyped):
user does not exist on type IExportedCommand
Jag försökte lägga till det här
interface IExportedCommand {
user: string;
pass: string;
}
Men jag får fortfarande felet. Hur kan jag fixa detta?
Svar #1
Du kan också göra:
npm install --save-dev @types/commander
REDIGERA: Commander inkluderar nu sina egna TypeScript-typningar, så detta borde inte längre vara nödvändigt.
Svar #2
Skapa en fil commander-expansion.d.ts med följande:
declare namespace commander {
interface IExportedCommand extends ICommand {
user: string;
pass: string;
}
}
Tips
Eftersom jag gjorde något liknande nyligen, rekommenderar jag --auth user:password. Sparar dig från att hantera användare som saknar användarnamn eller lösenord. Men förhindrar att använda : som ett lösenordsegenskap
¯\_(ツ)_/¯Mer: https://github.com/alm-tools/alm/blob/master/src/server/commandLine.ts#L24
