Typescript Исключить отказывается от обобщенных c типов - PullRequest
0 голосов
/ 20 апреля 2020

Вот минимальный воспроизводимый пример

type Value = {}

type Something = {}

function isValid<T>(a: Exclude<T, Value>) { }

function selecter<T extends Something>(obj: T) {
    isValid(obj)
}

export { }

Typescript 3.8.3 отклоняет isEqual (obj) выражение

Type 'Something' is not assignable to type 'Exclude<T, Value>

Но Тип Something присваивается! Это работает:

let s: Something = {}
isValid(s)

Не является ли сообщение об ошибке ошибкой? Как я могу заставить isValid принимать любой тип, кроме Значение ?

1 Ответ

0 голосов
/ 20 апреля 2020

Тип пропущенного совпадения для аргументов isValid.

type Something {}

function isValid<T>(a: T) { }

function selecter<T extends Something>(obj: T) {
  isValid(obj)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...