我们在代码库中使用一个cleanNullOrUndefined函数,如果键的值为空或未定义,该函数将删除对象中的键。这不是很好的类型,只是返回Partial原始对象,这在其他地方给出了一些错误。
我们需要的是输入函数来返回对象,其中键为 null 或未定义,删除并推断其他键的类型。
例子:
const obj = {
a: 1,
b: 'string',
c: false,
d: null,
e: undefined
}
// Desired return type
interface ReturnType {
a: number,
b: string,
c: boolean
}
Run Code Online (Sandbox Code Playgroud)
我似乎不知道如何做到这一点。
考虑这个例子:
const obj = {
a: 1,
b: 'string',
c: false,
d: null,
e: undefined
}
type Validate<T> = Pick<T, {
[Prop in keyof T]: T[Prop] extends null | undefined ? never : Prop
}[keyof T]>;
// type Test = {
// a: 1;
// b: 'string';
// c: false;
// }
type Test = Validate<{
a: 1,
b: 'string',
c: false,
d: null,
e: undefined
}>
const util = <Obj,>(obj: Obj): Validate<Obj> => {
return 'NOT IMPLEMENTED' as any
}
const result = util({
a: 1,
b: 'string',
c: false,
d: null,
e: undefined
})
result.a // ok
result.e // error
Run Code Online (Sandbox Code Playgroud)
Validate迭代每个对象键并检查它是否扩展null | undefined。如果是 - 返回never,否则 - 返回键名Prop。[keyof T]- 并从新创建的对象中获取所有值。Pick- 依次再次仅从 获取有效密钥T。
| 归档时间: |
|
| 查看次数: |
3265 次 |
| 最近记录: |