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

如何在TypeScript的对象内定义字符串数组?

问题解答

第一个报错的原因

当你写bar: []时,TypeScript的类型推断会判定这个数组永远不会包含任何元素,因此推断出的类型是never[]。往never[]类型的数组中push字符串,必然会触发类型不匹配的错误。

第二个写法错误的原因

你写bar: Array<string>时,误将Array<string>这个类型标识当成了值来赋值。实际上Array<string>是类型定义,你需要给bar赋值的是数组实例,而非Array构造函数本身。此时bar存储的是Array构造函数,它本身并没有push方法,所以会报错。

无需提取变量的简洁写法

不用把数组单独提取成变量,有几种直接在对象内定义类型的方法:

  1. 类型断言:直接给空数组断言为string[]
let foo = {
  bar: [] as string[]
};
foo.bar.push("Hello World!");
  1. 显式标注对象类型:给foo明确类型定义,指定bar为string[]
let foo: { bar: string[] } = {
  bar: []
};
foo.bar.push("Hello World!");
  1. 直接创建指定类型的数组实例:使用new Array<string>()创建字符串数组实例
let foo = {
  bar: new Array<string>()
};
foo.bar.push("Hello World!");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:50:24