gpt4 book ai didi

typescript - 在 TypeScript 中获取函数参数名称和类型

转载 作者:行者123 更新时间:2023-12-03 16:38:21 25 4
gpt4 key购买 nike

我玩过 Parameters<T>输入 TypeScript,它返回一个带有参数类型的元组。现在我想知道是否有一种方法不仅可以返回参数的类型,还可以返回名称?

就像是:

function MyFunc(a: string, b: boolean, ...args: string[]) {}

type extractedType = ParametersWithName<typeof MyFunc>

哪里 extractedType结果最终为:
{
a: string,
b: string
}

我会用它来从常规函数参数转换为接收参数对象的函数(如 React props)。

最佳答案

无论好坏,参数名称都不是函数类型的一部分。例如,类型签名 (foo: string) => void(bar: string) => void就类型兼容性而言,它们完全相同。姓名 foobar (通常)由 IntelliSense 保存为一种文档形式以帮助开发人员,但它们本质上是实现细节。并且由于不应该有一种方法来区分仅通过参数名称不同的两种函数类型,因此没有提供将这些名称转换为字符串文字类型以用作对象类型的机制。

在函数参数列表和元组类型之间转换的能力是 introduced in TypeScript 3.0通过 microsoft/TypeScript#24897 .这就是 Parameters<>可能的。该拉取请求对参数名称有以下注释:

Note that when a tuple type is inferred from a sequence of parameters and later expanded into a parameter list, ... the original parameter names are used in the expansion (however, the names have no semantic meaning and are not otherwise observable).



所以肯定没有办法使用 Parameters<>或类似的东西从函数中提取参数名称并使用它们。

对不起,我没有更好的答案给你。希望无论如何都有帮助;祝你好运!

关于typescript - 在 TypeScript 中获取函数参数名称和类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57993250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com