核心结论
TypeScript分别维护值空间与类型空间。值会参与运行时计算并通常出现在生成的JavaScript中;类型用于静态检查,绝大多数会在编译后被擦除。类型位置中的typeof只能查询编译器已经掌握的某个值的静态类型,不能执行函数、访问网络、读取文件,也不能观察对象在程序运行后的变化。keyof、索引访问类型、typeof和import type可以在两个空间之间建立有限联系,但不能把纯类型声明变成运行时数据。工程上应尽量从运行时常量派生类型,或者用运行时校验模式同时提供验证能力与静态类型,避免手写值集合和类型联合后产生漂移。
底层机制
值表达式中的typeof value是