Typcript поддерживает это со специальным типом возврата, X is A
. Вы можете прочитать об этом подробнее в своем разделе о пользовательских типах охранников .
В качестве примера вы можете ввести его так:
class A {}
class B extends A {
bb() { ... }
}
function isB(obj: A): obj is B { // <-- note the return type here
return obj instanceof B;
}
const x: A = new B(); // x has type A
if (isB(x)) {
x.bb(); // x is now narrowed to type B
}