У меня есть класс:
class X<T extends B> [...]
// this.p.a :: B | null
methodA(a: T):void {[...]}
methodB(): void {
if(this.p.a){ // :: B
this.methodA(this.p.a) // Error
Как видите, я передаю T
любого типа, если он распространяется B
, а затем я передаю ему какое-то свойство указанного типа B
. Однако Typescript не может сделать вывод, что B
- это тип, который удовлетворяет параметру типа T
в последней строке приведенного выше фрагмента кода.
Сообщение об ошибке:
error TS2345: Argument of type 'B' is not assignable to parameter of type 'T'.
Почему это не работает?
Должен ли я изменить какое-либо объявление обидного типа на B
вместо T
и передать по наследству?