You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript如何在运行时检查原始类型?

问题解答

为什么TypeScript中仍能使用typeof检查原始类型?

你混淆了TypeScript编译时类型系统和JavaScript运行时行为:

  • 你代码里的typeof是JavaScript原生的运行时操作符,不是TypeScript的类型查询语法。TypeScript编译时只会剥离自己的类型注解、接口、类型别名等编译时概念,不会修改或移除JavaScript本身的语法和运行时逻辑。
  • 这段代码编译后,所有typeof语句会原封不动保留在生成的JavaScript文件中,运行时由JS引擎执行,自然能返回对应值的原始类型。

自定义接口与原始类型的处理差异

两者本质不在一个层面:

  • 自定义接口/类型别名:完全是TypeScript的编译时产物,仅用于开发阶段的类型校验,编译后会被彻底移除,不会出现在最终的JS代码里,运行时根本不存在这些接口的痕迹。
  • 原始类型(string/number/object等):这些是JavaScript本身的运行时类型,typeof操作符是JS原生支持的功能,和TypeScript的编译时类型系统无关。就算你用TypeScript写代码,最终运行的还是JS,typeof依然按照JS的规则工作。

实际对比示例

比如定义一个自定义接口:

interface User {
  name: string;
  age: number;
}
const user: User = { name: "Alice", age: 25 };
console.log(typeof user); // 编译运行后输出'object'

这里的User接口编译后会被完全删掉,typeof user在运行时还是JS的原生操作,和接口毫无关系。


内容的提问来源于stack exchange,提问作者Danniel Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 19:48:26