gpt4 book ai didi

没有空值或未定义值的 typescript 返回对象

转载 作者:行者123 更新时间:2023-12-05 02:36:08 25 4
gpt4 key购买 nike

我们在代码库中使用了一个 cleanNullOrUndefined 函数,如果键的值为 null 或未定义,它会删除对象中的键。这不是很好的类型,只是返回原始对象的 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
}

我似乎无法理解如何做到这一点。

最佳答案

考虑这个例子:

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

Playground

Validate 遍历每个对象键并检查它是否扩展 null | undefined 与否。如果是 - 返回 never,否则 - 返回键名 Prop[keyof T] - 在并从新创建的对象中获取所有值。 Pick - 依次从 T 再次获取有效 key 。

关于没有空值或未定义值的 typescript 返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70363064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com