typescript中,对象使用动态变量作为key获取相应的值时类型声明
在TypeScript中,如果你想使用动态字符串作为对象的key来获取相应的值,你可以使用索引签签来声明这样的类型。索引签签允许你通过一个类型来索引对象的属性。
下面是一个使用索引签签来声明对象使用动态字符串作为key获取值的例子:
type MyObject = {
key1: string;
key2: number;
};
// 使用索引签签声明可以用动态字符串作为key的类型
type DynamicKeyObject = {
[key in keyof MyObject]: MyObject[key];
};
// 现在你可以这样使用DynamicKeyObject
function getValue(obj: DynamicKeyObject, key: string): string | number {
return obj[key]; // 这里TS可以推断出obj[key]的类型为string | number
}
const myObj: MyObject = {
key1: 'value1',
key2: 42,
};
const value = getValue(myObj, 'key1'); // value 类型为 string
const value2 = getValue(myObj, 'key2'); // value2 类型为 number
在这个例子中,DynamicKeyObject
类型使用了索引签签,它将 MyObject
对象中的每个键映射为它们对应的值类型。然后,getValue
函数接受一个 DynamicKeyObject
类型的参数和一个字符串类型的key,返回对应的值。通过这种方式,你可以在TypeScript中处理动态键来获取相应的值,并确保类型的正确性。
评论已关闭