TypeScript库如何让导出函数参数提示显示解析类型而非类型别名?
解决TypeScript导出函数参数类型显示别名而非实际类型的问题
方案1:使用内部私有类型别名(推荐,最简单)
将类型别名定义为模块内部私有(不导出),函数参数使用该别名,TypeScript会自动在编辑器提示中显示实际的联合类型,而非别名:
// 内部私有类型,不对外导出 type _MyInput = string | number; // 导出函数使用内部类型,自动补全会显示 input: string | number export function func1(input: _MyInput): void {} export function func2(input: _MyInput): void {}
方案2:使用工具类型展开别名(需导出类型时使用)
如果需要对外导出该类型,同时保持函数参数提示为实际联合类型,可以通过工具类型强制展开别名:
// 工具类型:用于展开类型别名,让TypeScript显示实际类型 type Expand<T> = T extends infer U ? U : never; // 内部私有类型 type _MyInput = string | number; // 导出展开后的类型,用户可正常导入使用 export type MyInput = Expand<_MyInput>; // 导出函数使用展开后的类型,提示显示实际联合类型 export function func1(input: MyInput): void {} export function func2(input: MyInput): void {}
效果验证
两种方案都能达到与直接编写input: string | number完全一致的自动补全效果,既避免了重复编写联合类型,又让用户看到更直观的参数类型提示。
内容的提问来源于stack exchange,提问作者angrykoala
相关产品推荐
相关产品推荐

