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

为何指定为string类型的变量,实际typeof检测结果却是number?

TypeScript类型标注与运行时类型不符的原因

先看你提供的代码:

let vAny: any = 10
let s1: string = vAny;

console.log(typeof s1)

核心原因

TypeScript的类型标注是编译时检查机制,只在代码编译阶段帮你校验类型是否合规,不会修改运行时变量的实际值和类型。

  • 你用any类型的vAny赋值给标注为string的s1时,any类型会完全绕过TypeScript的编译类型校验——TypeScript默认你清楚自己在做什么,所以不会阻止这个赋值操作。
  • 但运行时执行的是编译后的JavaScript代码,s1实际存储的还是数字10,所以typeof s1会输出number。

解决方法

如果要让运行时类型也符合string的标注,需要显式转换值的类型:

let vAny: any = 10
let s1: string = String(vAny); // 显式将数字转为字符串

console.log(typeof s1) // 输出 "string"

内容的提问来源于stack exchange,提问作者Kingshuk Saha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:02:07