有没有办法获取函数类型的参数类型?例如:
type MyFn = (a: number, b: string): boolean;
const fnInstance: MyFn = (...args) => true; // args are any[] here, causing `noImplicitAny` flag to issue an error
根据...args
类型,有没有办法获得MyFn
类型的内容?应该是[number, string]
。提前谢谢!
答案 0 :(得分:0)
不,rest参数必须是array类型。
要避免nomImplicitAny
的问题,您只需将其余参数定义为any[]
。
这不是问题,因为当你使用它时,TypeScript不会关心fnInstance
的定义,只是关于你指定的类型,因此,当调用它时,它会期望两个参数,a number
一个string
:
const fnInstance: MyFn = (...args: any[]) => true;
fnInstance(3, "hello"); // right
fnInstance(3, 4); // error
在const定义中,您正在进行以下类型转换:
(...args: any[]) => boolean --> MyFn
所以,最后你最终得到了MyFn
。只要函数定义的推断类型可赋予MyFn
,就不会有任何问题。在这种情况下,它是可分配的。
但是,如果你试过这个,你会收到错误:
const fnInstance: MyFn = (...args: any[]) => 7;