V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ericgui
V2EX  ›  TypeScript

TypeScript compiler 是不是对 typeof 进行了重新定义?

  •  
  •   ericgui · 2021-05-07 02:33:38 +08:00 · 1260 次点击
    这是一个创建于 1057 天前的主题,其中的信息可能已经有所发展或是发生改变。

    const a = { x: 1 }

    typeof a // 'object'

    但在 TypeScript 里,typeof a 就是 : { x: number }

    所以我觉得是不是 ts 的 compiler 对 typeof 做了一些加工,尤其是非基本类型的场景下,变得更加强大了,而不是仅仅输出一个 object 就算完了

    3 条回复    2021-05-07 10:30:53 +08:00
    mxT52CRuqR6o5
        1
    mxT52CRuqR6o5  
       2021-05-07 08:54:25 +08:00 via Android
    mxT52CRuqR6o5
        2
    mxT52CRuqR6o5  
       2021-05-07 08:57:01 +08:00 via Android
    准确的的说并不是重新定义,是在类型表达式中给与新的含义,而在原来的 js 代码中仍然是原来的 typeof
    noe132
        3
    noe132  
       2021-05-07 10:30:53 +08:00 via Android   ❤️ 1
    let t = typeof a // 这里的 typeof 是运算符,这个是 runtime 执行的

    type T = typeof a // 这里的 typeof 是 ts 的类型运算符,是在 compile time 执行的

    这 2 个名字一样,但不是同一个东西
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   950 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:07 · PVG 05:07 · LAX 14:07 · JFK 17:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.