📜  typescript 字典输入 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:35:24.449000             🧑  作者: Mango

TypeScript 字典输入

字典(也称为关联数组或映射)是一种常见的数据结构,可以通过键值对来存储和访问数据。在 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 中,可以使用接口和泛型来定义和使用字典输入。您可以使用接口来定义字典类型并使用对象字面量来初始化它。另外,您可以使用泛型函数来编写可以接受不同类型字典输入的函数。所有这些技术都可以提高代码的复用性和类型安全性。