typeof 在 TS 里是类型级查询:typeof x 提取变量或表达式的静态类型,typeof MyEnum 得到枚举成员的联合。常见于复用已有结构:typeof config 直接拿到配置对象的类型,无需再重复定义一份,改一处类型自动跟随,是保持类型与实现同步的利器。
typeof 用在类上得到实例类型,构造函数类型需要另外书写,配合 new () => T 可以做依赖注入。与 ReturnType、Parameters 结合还能从函数反推类型,实现类型间派生与复用,避免定义两份结构各走各的。注意它查询的是静态类型,与 JS 运行时的 typeof 作用完全不同。
const config = { host: 'localhost', port: 8080 }; type Config = typeof config; // 复用已有结构 function check(): boolean { return true; } type R = ReturnType<typeof check>; // boolean class Service { run(): void {} } type S = typeof Service; // 构造函数类型 const s = new Service(); // 实例类型是 Service