用途:帮助判断 TypeScript 中某个符号处于类型空间还是值空间,从而正确阅读和调试代码。适用于排查令人困惑的类型错误、理解 class 与 interface 的行为差异、正确使用 typeof、带类型标注的解构,以及理解 enum 行为。
主要能力:说明类型空间(运行时被擦除,如 type 别名、interface、类型级 typeof)与值空间(运行时存在,如变量、函数、运行时 typeof)的区别;指出 class 和 enum 同时引入类型与值;解释同一名称在不同上下文可指代不同实体;列出 typeof、this、&、|、const、extends、in、! 等双重含义构造;说明属性访问在类型空间只能用方括号(如 Person['first']),点号会报错。
使用方式:先判断当前处于哪个空间再解释符号。类型空间标志:type X = ...、interface X {}、x: Type、as Type。值空间标志:const x = ...、x instanceof Y、无类型标注的 typeof x。函数签名中参数名与类型交替出现。解构时不要把类型名写在值位置,应写成 function email({ to, subject, body }: { to: Person; subject: string; body: string }) {}。可用 TypeScript Playground 验证哪些符号在 JS 输出中消失,消失者仅属类型空间。
限制:instanceof 是运行时运算符,不能用于 interface 或类型别名,应改用类型守卫或可辨识联合;运行时 typeof 只返回 8 种字符串,无法区分对象形状,需要完整 TypeScript 类型时用 type T = typeof x。资料未提供安装命令、价格或平台信息。