假设我有一个这样的班级:
class Entity {
id?: string;
name?: string;
constructor({ id, name }: { id?: string; name?: string }) {
this.id = id;
this.name = name;
}
}
然后我有一个像这样的函数,它需要一个Entity类型的参数,但设置了id属性字段:
function myFunc(entity: Entity & { id: string }) {
console.log("do something", entity.id);
}
我希望以下方法能起作用,但不能:
const myEntityWithoutID = new Entity({ name: "no id" });
const myEntityWithID = new Entity({ name: "dummy", id: "dummy" });
myFunc(myEntityWithoutID); // error, as expected
myFunc(myEntityWithID); // error, but this should work
我不确定如何强制打字稿正确推断类实例的类型。我希望我已经提供足够的信息来解决这个问题,有人知道吗?