【发布时间】:2019-10-03 06:35:29
【问题描述】:
这里是 arg 的类型,Node.js 控制台命令解析器:
declare const flagSymbol: unique symbol;
declare function arg<T extends arg.Spec>(spec: T, options?: arg.Options): arg.Result<T>;
declare namespace arg {
export function flag<T>(fn: T): T & { [flagSymbol]: true };
export const COUNT: Handler<number> & { [flagSymbol]: true };
export type Handler <T = any> = (value: string, name: string, previousValue?: T) => T;
export interface Spec {
[key: string]: string | Handler | [Handler];
}
export type Result<T extends Spec> = { _: string[] } & {
[K in keyof T]?: T[K] extends Handler
? ReturnType<T[K]>
: T[K] extends [Handler]
? Array<ReturnType<T[K][0]>>
: never
};
export interface Options {
argv?: string[];
permissive?: boolean;
stopAtPositional?: boolean;
}
}
export = arg;
我需要注释解析结果:
import parseConsoleArgument from 'arg';
export function cli(rawConsoleCommandData: Array<string>): void {
const consoleCommandArguments: /* ??? */ = parseConsoleArgument(
{}, { argv: rawConsoleCommandData.slice(2)}
);
}
逻辑正确的类型是arg.Result。但是,我无法访问它。下面的代码
import parseConsoleArgument from 'arg';
export function cli(rawConsoleCommandData: Array<string>): void {
const consoleCommandArguments: arg.Result = parseConsoleArgument(
{}, { argv: rawConsoleCommandData.slice(2)}
);
}
给TS2503: Cannot find namespace "arg"。
【问题讨论】:
标签: node.js typescript typescript-typings