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

Relaterade artiklar