You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求可获取TypeScript预定义全局的官方API或第三方库

获取TypeScript预定义全局/构造的字符串列表

用TypeScript自身API直接提取

安装typescript包后,在JS环境中可通过官方API拿到预定义类型的字符串列表,无需手动解析声明文件:

  • 全局构造/类型:创建临时程序和类型检查器,提取全局作用域的符号名:
    const ts = require('typescript');
    // 创建空程序实例
    const program = ts.createProgram([], { target: ts.ScriptTarget.Latest });
    const checker = program.getTypeChecker();
    // 获取全局作用域的所有符号
    const globalSymbols = checker.getSymbolsInScope(
      ts.createSourceFile('temp.ts', '', ts.ScriptTarget.Latest),
      ts.SymbolFlags.Global
    );
    // 过滤内部下划线开头的符号,得到全局类型/构造名列表
    const globalTypeNames = globalSymbols.map(sym => sym.name).filter(name => !name.startsWith('_'));
    
    结果包含Uint32ArrayConstructor、Array、Promise这类全局构造和类型。
  • 工具类型:TypeScript 4.5+提供了直接获取工具类型名的方法:
    const utilityTypeNames = ts.getPredefinedTypeNames();
    
    结果包含Pick、Omit、Partial、Record等所有官方工具类型。

用第三方库快速获取

如果不想编写API逻辑,现成的库可直接提供整理好的字符串列表:

  • ts-builtin-types:预打包了所有TypeScript内置全局类型、工具类型的数组,直接导入即可使用:
    const { globalTypes, utilityTypes } = require('ts-builtin-types');
    
  • @typescript-eslint/utils:与ESLint生态兼容,适合为eslint-plugin-jsdoc配置的场景,可通过其类型元数据提取相关列表。

关于T这类类型参数

这类属于TypeScript语法的类型占位符,没有官方集中列表。可手动维护常用参数名(如T、U、K、V等),加入到ESLint规则的允许列表。

适配eslint-plugin-jsdoc的no-undefined-types规则

将上述获取到的字符串列表,添加到规则的definedTypes配置项中,即可避免将TypeScript预定义构造/类型标记为未定义:

// .eslintrc.js
module.exports = {
  rules: {
    'jsdoc/no-undefined-types': [
      'error',
      {
        definedTypes: [
          'Uint32ArrayConstructor',
          'Pick',
          'T',
          // 补充其他获取到的类型名
        ]
      }
    ]
  }
};

内容的提问来源于stack exchange,提问作者Brett Zamir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:50:26