TypeScript中关联对象数组的接口

smtd7mpg  于 2023-01-27  发布在  TypeScript
关注(0)|答案(2)|浏览(128)

我有这样一个对象:

var obj = {
    key1: "apple",
    key2: true,
    key3: 123,
    .
    .
    .
    key{n}: ...
}

因此obj可以包含任意数量的命名键,但是值必须全部为string、bool或number。
如何在TypeScript中将obj类型声明为接口?我可以声明一个联合类型或类似类型的关联数组(或可变元组)吗?

vfh0ocws

vfh0ocws1#

可以,您可以使用索引签名:

interface MyType {
    [key: string]: string | boolean | number;
}

var obj: MyType = {
    key1: "apple",
    key2: true,
    key3: 123
};
dgsult0t

dgsult0t2#

在阅读了这个问题和David's answer之后,我更深入地研究了文档,并提出了一个很棒的解决方案!
我已经使用Generic Types创建了一个字典界面

interface Dictionary<Type> {
   [key: string]: Type;
}

您可以**(重复)使用**,如下所示:

const myNumbers:Dictionary<number> = {
    key1: 1,
    key2: 2,
    key3: 3
};

const myStrings: Dictionary<string> = {
    key1: 'Lorem',
    key2: 'Ipsum',
    key3: 'Dolor'
};

const myElements:Dictionary<HTMLElement> = {
    button: document.querySelector('#button'),
    input: document.querySelector('#input')
};

相关问题