В Typescript `A` может 'присвоить` B`, который расширяет A, как с этим бороться? - PullRequest
0 голосов
/ 23 сентября 2019
export interface A {
  a?: string
  aa?: number
}

export interface B extends A {
  b?: string
  bb?: boolean
}

export interface C {
  <D extends B>(d: D): void
}

let c: C = <D extends B>(d: D) => {
  let h: D = { // Type '{ a: string; aa: number; b: string; bb: false; }' is not assignable to type 'D'.'{ a: string; aa: number; b: string; bb: false; }' is assignable to the constraint of type 'D', but 'D' could be instantiated with a different subtype of constraint 'B'.
    a: '',
    aa: 1,
    b: '',
    bb: false
  }
}

в объявленной строке h есть Ошибка: Тип '{a: string;аа: номер;б: строка;бб: ложно;} 'нельзя назначить типу' D '.'{ строка;аа: номер;б: строка;бб: ложно;} 'присваивается ограничению типа' D ', но экземпляр D может быть создан с другим подтипом ограничения' B '.

...