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

如何为cldr-data这类可调用模块编写TypeScript类型声明文件

cldr-data 包 TypeScript 类型声明编写方案

你提到的这类导出为可调用函数、同时挂载静态方法的CommonJS包,可通过TS接口的调用签名特性编写符合规范的类型声明,完整实现如下:

1. 完整声明文件代码

创建 cldr-data.d.ts 文件,写入以下内容:

// 定义兼具可调用属性与静态方法的接口
interface CldrData {
  // 直接调用函数时的类型签名,已知返回值类型可替换any
  (path: string): any;

  // 各静态方法的类型定义,参数和返回值可根据实际业务场景替换为更精确的类型
  all(): any;
  entireMainFor(locale: string, ...extraParams: any[]): any;
  entireSupplemental(): any;
}

declare const cldrData: CldrData;

// 对应 CommonJS 的 module.exports 导出规则
export = cldrData;

2. 关键规则说明

  • 接口的调用签名特性:TS 允许在 interface 中使用 (参数列表): 返回值 格式定义调用签名,符合该接口的变量可直接作为函数调用,同时接口中定义的其他属性会被识别为挂载在函数上的静态成员,完美匹配当前场景。
  • 导出语法适配:使用 export = 语法对齐 CommonJS 的 module.exports = cldrData 导出逻辑,开启 esModuleInterop 配置的项目同时支持 import cldrData from 'cldr-data' 和 import cldrData = require('cldr-data') 两种导入方式。
  • 类型优化建议:如果已知各方法的参数约束、返回值结构,可以把代码中的 any 替换为对应的精确类型,获得更完善的类型校验和提示效果。

内容的提问来源于stack exchange,提问作者Carl Patenaude Poulin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:24:05