task: T extends BaseEntity
а на 23
task: T | S
В чем ошибка? Нужно чтоб на 20 был тип T, а на 23 тип S в соответствии работы тайпгарда isTaskEntity
Linkkk
кажется ты хчешь использовать else
? написал конструкцию if else, разницы 0
значит не работают так TypeGuard
ты наугад отвечаешь или что? тайпгард взят из доки и если передавать конкретные типы то все ок работает
удачи
Это довольно забавное поведение, которое становится слегка более очевидным, если написать так
С точки зрения структурной типизации WithoutId<T> ⊆ T. Поэтому тайпскрипт не утруждает себя сужением типов от T | WithoutId<T> к WithoutId<T>
интересно, но даже в вашей реализации в ветках if/else у task нет конкретного одного типа
Всё так. В ветке else → T, как и говорит нам тайпгард. В ветке if → казалось бы WithoutId<T>, но не совсем, в силу описанного мною выше бага (особенности, если на то пошло, но имхо — бага)
Обсуждают сегодня