如何定义包含MyType所有属性省略版本的TypeScript类型?
解决方案
你需要的是让MyType的所有属性变为可选,从而允许任意省略部分(或全部)属性的对象,这时候应该用TypeScript内置的Partial<T>工具类型,而不是Omit。
示例代码
首先定义你的基础类型:
type MyType = { propertyA: string; propertyB: number; // 其他属性... }
然后定义MyOtherType:
type MyOtherType = { propertyC: MyType | Partial<MyType>; }
说明
Partial<MyType>会将MyType中的所有属性转换为可选属性,这意味着propertyC可以接受:
- 完整的
MyType对象(所有属性都存在) - 只包含部分属性的对象,比如
{propertyA: "test"}或{propertyB: 456} - 空对象
{}
而你之前尝试的Omit<MyType, any>会直接移除所有属性,得到的是一个空类型,这显然不符合需求。
内容的提问来源于stack exchange,提问作者SirGolem
相关产品推荐
相关产品推荐

