打字稿从类型中排除可选字段

杰克

有一个实用程序类型NonNullable,它将从联合类型中删除undefinednull值。但是我想知道是否有一种方法可以从类型中删除可选字段。

基本上,如果我有这样的类型:

type MyType = {
  thingOne: number,
  thingTwo?: number
};

我希望仅能在必填字段中创建类型

type MyRequireds = NonOptional<MyType>;
// which is a type only containing "thingOne"

是否有一些实用程序类可以满足组成的“ NonOptional”实用程序类?

瓦列里·卡特科夫(Valeriy Katkov)

一个棘手的解决方案:

type RequiredKeys<T> = {
  [K in keyof T]: ({} extends { [P in K]: T[K] } ? never : K)
}[keyof T];

type NonOptional<T> = Pick<T, RequiredKeys<T>>;

type MyType = {
  thingOne: number,
  thingTwo?: number
};

type MyRequireds = NonOptional<MyType>;

操场

诀窍在于{}扩展{thingTwo?: number}但不扩展{thingOne: number}我最初在这里找到此解决方案

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对象中可选字段的流类型

来自分类Dev

如何从git中排除打字稿编译文件

来自分类Dev

保证存在可选字段时的类型安全

来自分类Dev

带有可选包装类型的打字稿类型保护

来自分类Dev

打字稿使参数可选

来自分类Dev

打字稿:仅添加可选属性即可删除类型检查

来自分类Dev

在打字稿中检查可选道具类型时出错

来自分类Dev

如何在打字稿中将交点类型设为可选

来自分类Dev

可选字段,ADT还是?

来自分类Dev

@joincolumn注释的可选字段

来自分类Dev

如何过滤可选字段

来自分类Dev

elasticsearch 中的可选字段

来自分类Dev

可选字段的验证规则

来自分类Dev

打字稿扩展对象并排除日期类型

来自分类Dev

如何仅在构建中排除打字稿中的特定文件?

来自分类Dev

在ModelForm中排除字段

来自分类常见问题

从类型中排除属性

来自分类Dev

使用打字稿获取字段类型而不创建实例

来自分类Dev

打字稿:获取类型的属性字段名称

来自分类Dev

如何在类型级别使用可选字段表示数据?

来自分类Dev

打字稿-混合类型

来自分类Dev

打字稿联合类型

来自分类Dev

打字稿合并类型

来自分类Dev

打字稿:onPress类型

来自分类Dev

打字稿超级类型

来自分类Dev

打字稿包装类型

来自分类Dev

打字稿类型断言

来自分类Dev

Promise 的打字稿类型

来自分类Dev

打字稿:如果设置了其他可选类型,则需要设置类型