gpt4 book ai didi

typescript - 具有字符串属性的数组的类型或接口(interface)

转载 作者:搜寻专家 更新时间:2023-10-30 21:37:26 26 4
gpt4 key购买 nike

在 TypeScript 中有没有办法为数组定义一个类型或接口(interface)来接受随机字符串属性?例如,在 JavaScript 中我们可以执行以下操作:

const list = [ 1, 2, 3, 4, 5 ];
list.foo = 'bar';
console.log(a); // [ 1, 2, 3, 4, 5, foo: 'bar' ]
console.log(a[1]); // 2
console.log(a.foo); // 'bar'

我想在 TypeScript 中定义一个允许这样的数组的接口(interface)或类型。我尝试了以下方法:

interface IList extends Array<number> {
[key: string]: string;
}

但它会产生一系列错误,现有数组方法无法分配给类型字符串。

我可以在该界面中设置特定的键(例如,foo: string;,但我想知道是否有允许随机字符串属性的方法?

最佳答案

您可以使用 type 关键字和交集来定义类型:

type IList = number[] & {
[key: string]: string;
}

但是为该类型分配一个值有点棘手,因为数组不能分配给它(因为数组缺少字符串索引签名)。要解决此问题,您必须在分配数组时手动将其转换为该类型:

const x: IList = [1, 2, 3]; // Error: Index signature missing in type number[]
const y = [1, 2, 3] as IList; // Okay

然后:

y[0] // inferred as number
y["foo"] // inferred as string
y.filter(x => x % 2); // inferred as number[]

关于typescript - 具有字符串属性的数组的类型或接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49437147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com