为何VS Code中类型定义文件的类型别名会显示为原始类型?
问题解答
这种情况是正常的,既不是TypeScript配置错误,也不是你对类型别名的核心作用理解有误,只是TypeScript对基础类型别名的显示逻辑导致的。
核心原因:类型别名是“别名”而非新类型
type money = number 只是给number类型起了一个新名字,二者在TypeScript的类型系统中完全等价,并没有创建一个独立于number的全新类型。因此VS Code在显示类型提示时,会直接展示底层的原始类型(number),而不是别名本身。
什么时候会显示别名?
如果你的类型别名满足以下任一情况,VS Code的hover提示会显示别名:
- 别名指向复合类型(联合类型、交叉类型、对象类型等),比如:
// types.d.ts export type Money = number | string; // 联合类型 export type Order = { id: string; amount: Money }; - 别名是导出的模块成员(即带有
export关键字),即使是基础类型的别名,导出后在其他文件使用时,hover通常会显示别名。
强制显示基础类型别名的方法
如果你确实需要让money别名在hover时显示,可以通过以下方式实现:
- 使用JSDoc注释强制指定类型提示:
/** @type {money} */ let total = 100.00;
关于你的配置
你的types.d.ts已被包含在tsconfig.json的include字段中,这部分配置是正确的——如果配置有误,TypeScript会直接报错提示找不到money类型,而不是显示number。
内容的提问来源于stack exchange,提问作者Nillus
相关产品推荐
相关产品推荐

