我在TypeScript中使用了TypeScript类型,它返回带有参数类型的元组。现在我想知道是否有一种方法不仅可以返回参数的类型,还可以返回名称?
类似于:
function MyFunc(a: string, b: boolean, ...args: string[]) {}
type extractedType = ParametersWithName<typeof MyFunc>
其中,extractedType
结果最终为:
{
a: string,
b: string
}
我将使用它将常规函数参数转换为接收参数对象的函数(如receive )。
发布于 2019-09-18 15:10:23
无论好坏,参数名称都不是函数类型的一部分。例如,类型签名(foo: string) => void
和(bar: string) => void
在类型兼容性方面完全相同。foo
和bar
的名称(通常)被IntelliSense保留为一种帮助开发人员的文档形式,但它们本质上是实现细节。而且,由于不应该有一种方法来区分仅通过参数名称不同的两种函数类型,因此没有提供将这些名称转换为字符串文字类型作为对象类型的机制。
函数参数列表和元组类型之间转换的能力是通过在TypeScript 3.0中引入通过微软/打字稿#24897实现的。这就是使Parameters<>
成为可能的原因。该拉请求对参数名称有以下注释:
请注意,当从参数序列推断元组类型并随后展开为参数列表时,.在展开中使用原始参数名称(但是,名称没有语义意义,否则是不可观察的)。
在标记元组元素 4.0中引入的TypeScript允许您在参数名称和元组标签之间进行转换,但它们都不能作为字符串文本类型在类型系统中被观察到。
因此,绝对没有办法使用Parameters<>
或类似的东西从函数中提取参数名称并使用它们。
https://stackoverflow.com/questions/57993250
复制相似问题