class A {
x = 1
}
class B {
x = 1
}
type ThisIsTrue = B extends A ? true : false
Угадайте, что приведенное выше возвращает true, поскольку B назначается A, поскольку оба имеют {x: number}.
Но когда одно и то же поле установлено как частное, типы больше не могут быть назначены!
class C {
private x = 1
}
class D {
private x = 1
}
type ThisIsFalse = D extends C ? true : false
Есть ли причина, по которой приведенное выше значение возвращает false?
Но когда класс расширяется C, он снова обрабатывается как назначаемый ...
class E extends C {
}
type ThisIsAgainTrue = E extends C ? true : false
Означает ли это, что, просто добавив частное поле к классу, мы действительно можем включить проверку типа экземпляра для классов?!
type InstanceOf<D, B> = D extends B ? true : false // provided B has a private field