Если объекты в машинописи имеют одинаковые поля или все поля класса B
также находятся в классе A
, тогда класс B
также является экземпляром класса A
в соответствии с средством проверки типов машинописи,См. Следующий пример:
class A {
foo: string;
bar: string;
}
class B {
foo: string;
}
function convertAtoB(input: A): B {
return input;
}
В этом примере convertAtoB()
должен преобразовывать ввод типа A в экземпляр типа B. Однако текущая реализация не выдает никаких ошибок или предупреждений,потому что класс A
обладает тем же свойством foo
, что и B
.Возвращаемое значение теперь содержит оба поля foo
и bar
, что нежелательно.
Существуют ли какие-либо флаги компилятора, дополнения TSlint или другие приемы, которые могут предупреждать об этом сценарии или выдавать ошибку (время компиляции).