javascript 类/接口/类型的所有省略的类型

mqxuamgl  于 2023-04-28  发布在  Java
关注(0)|答案(2)|浏览(94)

如果我有一个类型:

type MyType = {
    ...
    propertyA: string;
    propertyB: number;
    ...
}

我怎样才能在另一种类型中键入这个,但允许省略属性的所有版本?例如:

type MyOtherType = {
    propertyC: MyType | Omit<MyType, ANYTHING>;
}

我尝试过Omit<MyType, any>,但它删除了对象上其他属性的类型。
正确的方法是什么?

f0ofjuux

f0ofjuux1#

我相信你的意思是让所有这些都可选(Partial),你可以尝试使用Partial<T>来代替:

type MyType = {
    ...
    propertyA: string;
    propertyB: number;
    ...
}

type MyOtherType = {
    propertyC: MyType | Partial<MyType>;
}
ia2d9nvy

ia2d9nvy2#

如果我没理解错的话。您可以使用Partial实用程序类型使MyType的所有属性都是可选的,然后使用Omit从其中删除任何您想要的属性。

type MyOtherType = {
    propertyC: MyType | Omit<Partial<MyType>, 'propertyA'>;
}

这是一个例子。所以我从MyType中删除了propertyA。您可以通过将“propertyA”替换为该属性的名称来删除该属性。

相关问题