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

如何在TypeScript中声明字符串索引(关联)数组?

正确实现TypeScript字符串索引关联数组的方式

你原来的写法报错是因为TypeScript的Array类型仅支持数字索引,Array<string>[string]试图获取数组的字符串索引类型,但数组本身没有这个定义,所以会报错。同时,数组和字符串索引对象是不兼容的类型,不能把[]赋值给字符串索引类型的变量。

实现字符串索引的关联数组,正确的方式是定义一个带字符串索引签名的对象类型:

基础实现

// 定义字符串索引的对象类型,键为string,值为string
type Bla = { [key: string]: string };

// 初始化空对象(不能用[],数组是数字索引类型)
const blubb: Bla = {};
blubb["edfefe"] = "2";

可选:允许值为undefined

如果需要允许某些键不存在(即值可以是undefined),可以调整类型:

type Bla = { [key: string]: string | undefined };

不推荐的混合方式(数组+字符串索引)

如果强行想同时拥有数组方法和字符串索引,可以用交叉类型,但这种写法存在类型冲突风险(比如数组的内置属性会和自定义字符串键冲突),不建议在生产代码中使用:

type Bla = Array<string> & { [key: string]: string };
const blubb: Bla = [];
blubb["edfefe"] = "2";

简单来说,TypeScript里的“关联数组”本质就是带字符串索引的对象,和原生Array是两种不同的类型,不要混用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:12:42