Я пытаюсь добавить метод, который удаляет внутреннее свойство из типа объекта, и из-за сложного базового класса, который я не могу изменить, у меня возникла следующая проблема: я написал метод, который должен отбрасывать приведение свойства (в данном случае name), но свойство ceo.name
остается доступным для доступа. Я считаю, что это происходит потому, что добавление типа без свойства имени генерального директора к this
просто требует наибольшего знаменателя, то есть {name:string} & {} == {name:string}
есть ли способ решить эту проблему?
class Company {
ceo: {}
addCeoNameType() {
return this as this & {
ceo: {
name: string;
}
}
}
removeCeoNameType() {
const ceoForType: this['ceo'] = null;
return this as this & {
ceo: Omit<typeof ceoForType, 'name'>;
}
}
}
class Foo {
bar() {
const catsInc = new Company();
const catsIncWithCeoName = catsInc.addCeoNameType();
catsIncWithCeoName.ceo.name;
catsIncWithCeoName.removeCeoNameType().ceo.name;
}
}