如何在打字稿中将对象的值称为泛型?
How do I refer a value of an object as a generic in typescript?
我正在尝试为此函数编写签名:
export function objToArray(obj){
let ret = [];
for(const key of Object.keys(obj)){
ret.push(Object.assign({objKey: key.toString()}, obj[key]));
}
return ret;
}
因此,对于包含 U 类型值的 T 类型对象,我想 return Array<U & {objKey: string}>
。我不知道如何使用打字稿来做到这一点。
您可以使用 lookup types。类型 T
具有类型 keyof T
的键和类型 T[keyof T]
的值。因此,您的函数将像这样输入:
export function objToArray<T>(obj: T): Array<T[keyof T] & { objKey: string }>{
let ret = [];
// Object.keys() returns `string[]` but we will assert as `Array<keyof T>`
for(const key of Object.keys(obj) as Array<keyof T>){
ret.push(Object.assign({objKey: key.toString()}, obj[key]));
}
return ret;
}
希望对您有所帮助;祝你好运!
我正在尝试为此函数编写签名:
export function objToArray(obj){
let ret = [];
for(const key of Object.keys(obj)){
ret.push(Object.assign({objKey: key.toString()}, obj[key]));
}
return ret;
}
因此,对于包含 U 类型值的 T 类型对象,我想 return Array<U & {objKey: string}>
。我不知道如何使用打字稿来做到这一点。
您可以使用 lookup types。类型 T
具有类型 keyof T
的键和类型 T[keyof T]
的值。因此,您的函数将像这样输入:
export function objToArray<T>(obj: T): Array<T[keyof T] & { objKey: string }>{
let ret = [];
// Object.keys() returns `string[]` but we will assert as `Array<keyof T>`
for(const key of Object.keys(obj) as Array<keyof T>){
ret.push(Object.assign({objKey: key.toString()}, obj[key]));
}
return ret;
}
希望对您有所帮助;祝你好运!