Вот минимальный воспроизводимый пример
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 принимать любой тип, кроме Значение ?