Ts中的泛型函数总结keyof
在TypeScript中,keyof
是一个用来获取对象所有键的工具,它可以用来制作泛型函数。
以下是一些使用keyof
的场景:
- 创建一个泛型函数,该函数接收一个对象并返回该对象的所有键。
function getKeys<T>(obj: T) : keyof T {
return Object.keys(obj) as keyof T;
}
let obj = {
name: 'John',
age: 30
};
let keys = getKeys(obj); // 'name' | 'age'
- 创建一个泛型函数,该函数接收一个对象和一个键,然后返回该键的值。
function getValue<T, K extends keyof T>(obj: T, key: K) : T[K] {
return obj[key];
}
let obj = {
name: 'John',
age: 30
};
let name = getValue(obj, 'name'); // string
let age = getValue(obj, 'age'); // number
- 创建一个泛型函数,该函数接收一个对象和一个键,然后设置该键的值。
function setValue<T, K extends keyof T>(obj: T, key: K, value: T[K]) : void {
obj[key] = value;
}
let obj = {
name: 'John',
age: 30
};
setValue(obj, 'name', 'Doe');
setValue(obj, 'age', 25);
- 创建一个泛型函数,该函数接收一个对象,然后返回该对象的所有值。
function getValues<T>(obj: T) : T[keyof T][] {
return Object.keys(obj).map(key => obj[key as keyof T]);
}
let obj = {
name: 'John',
age: 30
};
let values = getValues(obj); // (string | number)[]
以上就是一些使用keyof
的场景和示例代码。
评论已关闭