const a = { x: 1 }
typeof a // 'object'
但在 TypeScript 里,typeof a 就是 : { x: number }
所以我觉得是不是 ts 的 compiler 对 typeof 做了一些加工,尤其是非基本类型的场景下,变得更加强大了,而不是仅仅输出一个 object 就算完了
1
mxT52CRuqR6o5 2021-05-07 08:54:25 +08:00 via Android
|
2
mxT52CRuqR6o5 2021-05-07 08:57:01 +08:00 via Android
准确的的说并不是重新定义,是在类型表达式中给与新的含义,而在原来的 js 代码中仍然是原来的 typeof
|
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 个名字一样,但不是同一个东西 |