我正在尝试为此功能编写签名:
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的对象,我想返回Array<U & {objKey: string}>
。我无法弄清楚如何使用打字稿来做到这一点。
答案 0 :(得分:4)
您可以使用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;
}
希望有所帮助;祝你好运!