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

2021-05-07 02:33:38 +08:00
 ericgui

const a = { x: 1 }

typeof a // 'object'

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

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

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

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

这 2 个名字一样,但不是同一个东西

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/775319

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX