📅  最后修改于: 2023-12-03 15:35:24.449000             🧑  作者: Mango
字典(也称为关联数组或映射)是一种常见的数据结构,可以通过键值对来存储和访问数据。在 TypeScript 中,可以使用对象字面量来表示字典,并使用字符串或数字键来访问其值。然而,在有些情况下,对象字面量可能无法满足需要,例如需要类型检查或更复杂的键类型。在本文中,我们将介绍 TypeScript 中如何使用接口和泛型来定义和使用字典输入。
在 TypeScript 中,可以使用接口来定义字典输入类型。接口中的索引签名可以指定键类型和值类型,并使用 square bracket notation(方括号表示法)来表示属性名称,例如:
interface Dictionary<T> {
[key: string]: T;
}
let dict: Dictionary<number> = {
one: 1,
two: 2,
};
在上面的例子中,我们定义了一个名为 Dictionary
的接口,使用泛型 T
来表示值类型。接口中的索引签名 [key: string]: T
表示它是一个索引类型,键类型为字符串,值类型为 T
。然后我们创建 dict
变量,类型为 Dictionary<number>
,并赋值一个包含两个键值对的对象字面量。
注意,即使键类型为字符串,使用方括号在对象中访问值仍然使用字符串表示法:
console.log(dict['one']); // output: 1
console.log(dict['two']); // output: 2
在 TypeScript 中,还可以使用泛型函数定义可以接受不同类型字典输入的函数。例如:
function printDictionary<T>(dict: { [key: string]: T }): void {
Object.keys(dict).forEach((key) => {
console.log(`${key}: ${dict[key]}`);
});
}
let numberDict = { one: 1, two: 2 };
let stringDict = { foo: 'bar', baz: 'qux' };
printDictionary(numberDict); // output: one: 1, two: 2
printDictionary(stringDict); // output: foo: bar, baz: qux
在上面的例子中,我们定义了一个名为 printDictionary
的函数,它接受一个类型为 { [key: string]: T }
的对象类型作为参数,并通过 Object.keys
迭代对象的键并输出键值对。然后,我们创建两个不同类型的字典(一个是数字类型,一个是字符串类型),并将它们作为参数传递给 printDictionary
函数。
在 TypeScript 中,可以使用接口和泛型来定义和使用字典输入。您可以使用接口来定义字典类型并使用对象字面量来初始化它。另外,您可以使用泛型函数来编写可以接受不同类型字典输入的函数。所有这些技术都可以提高代码的复用性和类型安全性。