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

为什么TypeScript对类型不匹配的数组与元组不抛出运行时错误?

TypeScript 数组写入不符类型值运行不报错的原因

你给出的测试代码如下:

var myTuple = [10,"Hello"];
console.log(myTuple[1]);

var myArray:number[] = [10,20,"Hello"];
console.log(myArray[2]);
  • TypeScript 的所有类型校验仅在编译转译阶段生效,最终在浏览器/Node.js 环境运行的是编译后的纯 JavaScript 代码。JavaScript 本身是动态弱类型语言,没有数组单类型存储的限制,允许数组内存储任意类型的值,因此运行阶段不会抛出类型相关错误。
  • 这段代码能成功生成可运行的 JS 代码,说明你当前的 TypeScript 项目没有开启严格类型校验配置。正常开启strict相关校验规则的项目中,myArray声明为number[]类型后写入字符串值,编译阶段就会直接抛出Type 'string' is not assignable to type 'number'的错误,不会生成后续的运行代码。
  • 额外补充:你示例中声明的myTuple在默认 TS 类型推导规则下不会被识别为元组,只会被推导为(number | string)[]联合类型数组,如果需要显式定义元组,需要手动标注类型:var myTuple: [number, string] = [10, "Hello"]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:21:03