首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在TypeScript中获取函数参数名称和类型

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

Stack Overflow用户
提问于 2019-09-18 12:50:00
回答 1查看 4.8K关注 0票数 11

我在TypeScript中使用了TypeScript类型,它返回带有参数类型的元组。现在我想知道是否有一种方法不仅可以返回参数的类型,还可以返回名称?

类似于:

代码语言:javascript
运行
复制
function MyFunc(a: string, b: boolean, ...args: string[]) {}

type extractedType = ParametersWithName<typeof MyFunc>

其中,extractedType结果最终为:

代码语言:javascript
运行
复制
{
    a: string, 
    b: string
}

我将使用它将常规函数参数转换为接收参数对象的函数(如receive )。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-18 15:10:23

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

函数参数列表和元组类型之间转换的能力是通过在TypeScript 3.0中引入通过微软/打字稿#24897实现的。这就是使Parameters<>成为可能的原因。该拉请求对参数名称有以下注释:

请注意,当从参数序列推断元组类型并随后展开为参数列表时,.在展开中使用原始参数名称(但是,名称没有语义意义,否则是不可观察的)。

标记元组元素 4.0中引入的TypeScript允许您在参数名称和元组标签之间进行转换,但它们都不能作为字符串文本类型在类型系统中被观察到。

因此,绝对没有办法使用Parameters<>或类似的东西从函数中提取参数名称并使用它们。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57993250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档