【问题标题】:Typescript type alias let Intellisense show alias name, not source typeTypescript 类型别名让 Intellisense 显示别名,而不是源类型
【发布时间】: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


    【解决方案1】:

    顾名思义,类型别名只是其他类型的不同名称。类型别名不是编译器保证保留的东西(与接口不同),它应用启发式算法来提供最佳用户体验(在这种情况下它可能会失败)。

    也不是Anumber 实际上是同一类型。如果要确保numberA 的不可分配性,则需要使用branded types

    type A = number & { isA: undefined};
    
    declare function f(): A;
    
    const a = f(); // `a` is A, not number
    

    play

    注意:还有一个提案(thisthis)将品牌类型机制融入到打字稿中,但在撰写本文时尚未最终确定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-18
      • 2019-03-02
      • 1970-01-01
      • 2017-08-06
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多