TypeScript:如何获取可调用参数的类型?

时间:2017-10-12 15:41:06

标签: typescript

TypeScript有typeofkeyof。我正在寻找一些可以让我得到可调用参数类型的东西作为元组。例如,

import subject, { ParamA, ParamB, Output } from '.'
interface TestCase {
  input: (typeof subject).parameters // or perhaps `parametersof subject`
  key: keyof Output
  expectedValue: string
}

我知道我可以做input: [ParamA, ParamB]并完成它,但是......你知道......

1 个答案:

答案 0 :(得分:3)

不干净,没有。 TypeScript当前(从版本2.5开始)缺少type operators的类型,它可以让您从函数类型中干净地提取参数类型。有一个proposal可以让你在任意表达式上使用std::multi_set,这将为你提供一种方法。现在,您可以这样做(仅适用于两个参数,必要时可以扩展到更多):

matchOpticalFlowNaive()

欺骗类型系统提取typeof的参数类型并声明该类型的const params = (false as true) && (null! as <T, U>(f: (p1: T, p2: U, ...rest: any[]) => any) => [T, U])(subject); interface TestCase { input: typeof params key: keyof Output expectedValue: string } 常量。在运行时,subject只是params这是好事,因为你实际上不能让函数在运行时返回它的参数类型。

它很丑陋(一个虚拟的常数乱码你的代码)但它有效。

希望有所帮助;祝你好运!