TypeScript中的Typeof参数对象

时间:2017-03-03 06:47:16

标签: javascript node.js

我基本上有这个:

Object

所以我们有function foo(){ // literally pass the arguments object into the pragmatik.parse method // the purpose of pragmatik.parse is to handle more complex variadic functions const [a,b,c,d,e] = pragmatik.parse(arguments); // now we have the correct arguments in the expected location, using array destructuring } 方法:

pragmatik.parse

现在我想使用TypeScript来定义类型,我所知道的是参数是一个Object:

function parse(args){

   // return parsed arguments

}

所以我的问题是:TypeScript是否为JS中的function parse(args: Object){ } 对象提供了定义或类型?对不起,这有点元,但请耐心等待,我所要求的是理智的。

2 个答案:

答案 0 :(得分:1)

我的Webstorm IDE建议这可能是IArguments,由lib/es6/d.ts提供,它位于某处。也许有人可以证实这是正确的,但我相当肯定。

所以答案是:

function parse(args: IArguments){


}

并且完整的签名将是:

function parse(args: IArguments) : Array<any> {


}

因为parse方法返回一个通用数组

答案 1 :(得分:1)

您可以使用来自npm的tsargs软件包选择确切的参数类型

例如:

import { ArgsN } from 'tsargs';

function foo(a: boolean, b: number, c: string) {}
const argsABC: ArgsN<typeof foo> = [ true, 123, 'Hello' ];

在您的情况下:

import { ArgsN } from 'tsargs';

function parse<T extends (...args: any[]) => any>(args: IArguments): ArgsN<T> {
    // return parsed arguments
}

// ...

const args = parse<typeof foo>(arguments);
// args -> [ boolean, number, string ];