我有一个像这样的对象:
var obj = {
key1: "apple",
key2: true,
key3: 123,
.
.
.
key{n}: ...
}
因此,obj
可以包含任意数量的命名键,但所有值必须是字符串、布尔或数字。
如何在TypeScript中将obj
的类型声明为接口?我可以声明一个联合类型的关联数组(或可变元组)或类似的东西吗?
我有一个像这样的对象:
var obj = {
key1: "apple",
key2: true,
key3: 123,
.
.
.
key{n}: ...
}
因此,obj
可以包含任意数量的命名键,但所有值必须是字符串、布尔或数字。
如何在TypeScript中将obj
的类型声明为接口?我可以声明一个联合类型的关联数组(或可变元组)或类似的东西吗?
是的,你可以使用索引签名:
interface MyType {
[key: string]: string | boolean | number;
}
var obj: MyType = {
key1: "apple",
key2: true,
key3: 123
};
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')
};