用新属性扩展现有接口,而不声明新接口



让我们假设我有一个接口:

interface Cat {
name: string;
age: number;
color: string;
}

现在我想用新接口创建对象,用新属性扩展部分Cat:

interface MyCat extends Partial<Cat> {
sex: "male" | "female"
}
const cat: MyCat = {name: "Tom", sex: "male"}

因此它工作。但是如果我不想声明新的接口(MyCat),以防我不会在任何地方重用它,我想做这样的事情(当我创建对象时设置类型):

const cat: Partial<Cat> {sex: "male" | "female"} = {name: "Tom", sex: "male"}

我怎样才能做到这一点?

如果我没理解错的话,你已经很接近了,只是少了一个&:

const cat: Partial<Cat> & {sex: "male" | "female"} = {name: "Tom", sex: "male"}

最新更新