我正在尝试为此函数编写签名:
export function objToArray(obj){
let ret = [];
for(const key of Object.keys(obj)){
ret.push(Object.assign({objKey: key.toString()}, obj[key]));
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
因此,对于包含 UI 类型值的 T 类型对象,要返回Array<U & {objKey: string}>
。我不知道如何用打字稿做到这一点。
您可以使用索引访问类型。类型T
具有 type 的键keyof T
和 type 的值T[keyof T]
。因此,您的函数将如下所示:
export function objToArray<T extends object>(
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;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4832 次 |
最近记录: |