在 Typescript 中获取泛型类型参数的名称

2024-04-26

是否可以在打字稿中获取泛型类型参数的名称。

有这个方法。

getName<T>(): string {
   .... use some operator or something 
}

像这样使用它

class MyClass{
}


getName<MyClass>(); ///=> should return 'MyClass'

我尝试过使用https://www.npmjs.com/package/ts-nameof https://www.npmjs.com/package/ts-nameof但它不起作用。

Doing

const name = nameof<T>();

fails

或者也许还有另一种方法可以实现这一目标?


你不能,仅凭打字稿不行。 Typescript 只将 Typescript 编译为 javascript。 Javascript 没有类似泛型类型的东西,所以:

getName<MyClass>();

被编译为

getName();

当然,您不期望相同的结果会产生不同的结果getName()没有参数。 您需要一些东西来生成更多代码才能执行此操作,或者向您的函数添加一个参数:

function getName<T extends new (...args: any[]) => any>(clazz: T): string {
  return clazz.name;
}

class MyClass{
}

getName(MyClass);

它只能与运行时存在的类一起使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Typescript 中获取泛型类型参数的名称 的相关文章

随机推荐

  • 将 .aar 和 .jar 文件嵌入库中

    我将创建一个包装许多蓝牙设备 SDK jar 和 aar 文件 的 android 库 aar 此文件无法在 Maven 或替代存储库中发布 点击这些链接 link1 https stackoverflow com a 60888941 5
  • 使用 PHP 将未知行数插入 MySQL

    我正在尝试使用 PHP 将未知数量的行插入到 MySQL 中 它应该是这样工作的 Javascript 解析 HTML DOM 以创建基于 css 类的多维数组 该数组将具有一定数量的行 或子数组 与具有该类的元素数量相对应 这可以是任何
  • 使用代码将 Google Apps 脚本函数分配给 Google 表格图像

    使用代码将 GOOGLE APPS 脚本功能分配给图像 通过单击 Google 表格中的图像并选择 分配脚本 选项 就可以实现这一点 但这是一项手动任务 我想将其自动化 可以将图像插入 Google 表格并使用 Apps 脚本代码分配函数
  • 如何在 Vaadin 7 表中实现滚动监听器

    在 Vaadin 中 当您在表格中向下或向上滚动时 com vaadin ui Table 不会触发任何事件来告诉您用户正在滚动 为什么我们需要在表格中滚动事件 我们先来看看 Vaadin 这个例子 仪表板演示 http demo vaad
  • 扩展会员提供者

    设想 构建一个供公司输入信息的应用程序 我需要扩展 ASP NET 中的内置成员资格提供程序 我的独特情况是 我已经拥有每家公司的人口统计信息 但没有网络应用程序的用户 ID 和密码 我想用人口统计信息预先填充数据库 向每个公司发送一个唯一
  • 使用另一个表中的唯一值创建一个表

    我正在使用 MS SQL Server Management Studio 我有桌子 Num ID Alpha ID 1 A 1 B 1 C 2 B 2 C 3 A 4 C 5 A 5 B 我想创建另一个包含该表中 2 列的表 以便 col
  • Angular 6 HttpClient - CORS 问题

    我的 Nodejs Restful 服务有以下端点http localhost 3000 api countries http localhost 3000 api countries 我正在使用这个中间件https github com
  • arm-thumb指令集的blx指令如何支持4MB范围

    读自https www keil com support man docs armasm armasm dom1361289866046 htm https www keil com support man docs armasm arma
  • B2C认证不返回access_token

    我正在尝试使用 PKCE 一个有角度的项目来实现授权代码流 我正在使用 angular auth oidc client 我们已经有一个基于 IdentityServer4 的现有内部实施 客户端可以很好地配合该实施 但我们现在正在尝试将身
  • 您的应用程序正在使用具有不安全的 openFile 实现的内容提供程序

    在 Playstore 上发布我的应用程序后 我收到了这封电子邮件 您好 Google Play 开发者 我们审查了包名为 com example myappname 的 MyAppName 发现您的应用使用的软件包含用户安全漏洞 具有这些
  • 相机 API:跨设备问题

    我正在开发一个相机应用程序 基本上作为消息传递应用程序的一部分来附加图像等 该应用程序需要适用于 gt SDK 2 2 并且 I can t尽可能多地使用默认的 Android 相机 因为 该应用程序的性质决定了图像不应保存到磁盘上 一些
  • 如何测量 Hotspot 元空间中的碎片?

    我正在研究调试应用程序中的 OutOfMemoryError Metaspace 错误 在 OOME 之前 我在 gc 日志中看到以下内容 Heap before GC invocations 6104 full 39 par new ge
  • Django 使用 update() 模拟模型上的存储抛出错误

    我有一个小项目 正在进行一些测试 最近我问了一个问题 django test mocked imagefield 防止 上传 或 测试后清理 https stackoverflow com questions 42266305 django
  • 当 python 添加小整数时,幕后会发生什么? [复制]

    这个问题在这里已经有答案了 我正在摆弄id最近意识到 c Python 做了一些非常明智的事情 它确保小整数始终具有相同的值id gt gt gt a b c d e 1 2 3 4 5 gt gt gt f g h i j 1 2 3 4
  • 如何在 git tag 消息中包含换行符

    当我在 git 中标记版本化代码时 我喜欢在标记消息中使用项目符号点 这可以通过带注释的标签轻松完成 git tag a v1 0 0 Change number 1 Change number 2 Write a tag message
  • 媒体播放器准备时的进度条

    我试图弄清楚如何在我的媒体播放器准备流文件时显示 正在加载 请稍候 的进度条 现在发生的事情是在歌曲准备好后显示 我怎样才能解决这个问题 mediaPlayerLoadingBar ProgressDialog show PlaylistA
  • Java更改系统换行符

    在 Windows 上 使用System out println 打印出来 n r而在 Unix 系统上你会得到 n 有没有办法告诉java你想使用什么换行符 正如其他人已经说过的 系统属性line separator包含实际的行分隔符 奇
  • 什么是 IOS Safari 最大网页宽度限制(显示错误 --> 重复出现问题)

    2022 年 在最新的 ios 上 iOS Safari 在我的网站主页上崩溃 我无法弄清楚确切的问题 我的主页目前是一个仅限桌面的网站 在 Android 和 Windows 上加载快速且良好 但在 ios 14 15 中显示错误 重复出
  • 在 Python 中如何确定 IP 地址是否私有?

    在 Python 中 确定 IP 地址 例如 127 0 0 1 or 10 98 76 6 是在专用网络 http en wikipedia org wiki Private network 代码听起来并不难写 但可能存在比立即显而易见的
  • 在 Typescript 中获取泛型类型参数的名称

    是否可以在打字稿中获取泛型类型参数的名称 有这个方法 getName