我基本上有这个:
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){
}
对象提供了定义或类型?对不起,这有点元,但请耐心等待,我所要求的是理智的。
答案 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 ];