在 TypeScript 中创建类型安全的字典
// 定义一个字符串字面量类型
type DictKeys = "name" | "age" | "gender";
// 使用泛型创建一个字典类型,该类型将字符串字面量映射到其值的类型
type Dict<T> = {
[key in DictKeys]: T;
};
// 使用Dict类型创建一个类型安全的字典
const personData: Dict<string> = {
name: "Alice",
age: "25",
gender: "female"
};
// 尝试添加一个不允许的键会导致编译时错误
// personData.email = "alice@example.com"; // 错误: 索引签名匹配问题
// 使用keyof操作符可以获取字典的所有键
type AllKeys = keyof Dict<T>; // 类型为 "name" | "age" | "gender"
这段代码定义了一个名为DictKeys
的字符串字面量类型,然后使用泛型定义了一个Dict
类型,它允许将DictKeys
类型的每个值映射到指定的类型T
。personData
是一个具体的Dict
类型实例,它将字符串字面量映射到string
类型的值。这样的字典是类型安全的,因为它只接受DictKeys
类型定义的键。如果尝试添加一个不在DictKeys
中定义的键,TypeScript编译器会报错。
评论已关闭