【发布时间】:2019-09-23 10:36:01
【问题描述】:
考虑一下这段简短的代码
type A = number;
declare function f(): A;
const a = f(); // `a` is number, not A
为什么 TS 显示 a: number 而不是 a: A?
【问题讨论】:
标签: typescript types type-alias
考虑一下这段简短的代码
type A = number;
declare function f(): A;
const a = f(); // `a` is number, not A
为什么 TS 显示 a: number 而不是 a: A?
【问题讨论】:
标签: typescript types type-alias
顾名思义,类型别名只是其他类型的不同名称。类型别名不是编译器保证保留的东西(与接口不同),它应用启发式算法来提供最佳用户体验(在这种情况下它可能会失败)。
也不是A 和number 实际上是同一类型。如果要确保number 对A 的不可分配性,则需要使用branded types。
type A = number & { isA: undefined};
declare function f(): A;
const a = f(); // `a` is A, not number
【讨论】: