type Config<T extends boolean> = {
enabled: T
}
function myFunc<T extends boolean>(cfg: Config<T>): Array<T extends true ? number : string> {
if (cfg.enabled) { // (property) enabled: T extends boolean
return [1] // Type 'number' is not assignable to type 'T extends true ? number : string'
} else {
return [''] // Type 'string' is not assignable to type 'T extends true ? number : string'
}
}
А для чего generic писать для enabled? Сделай просто boolean
Мне нужно чтобы по свойству enabled функция отдавала разные типы данных. Оно работает, и даже при использовании правильный тип выводит. Но в самом теле функции ругается, что я неправильный тип отдаю
попробуй T extends true ? number[] : string[]
Пробовал, тоже самое
typeof тогда?
typeof чего? number, string, boolean итак типы. T в функции - тоже тип
А можешь скрин функции скинуть, что-то немогу понять какое у нее боди
https://www.typescriptlang.org/play?#code/C4TwDgpgBAwg9gOwGYEsDmAeAKlCAPYCBAEwGcoAjOOAGwgEMEA+KAXigG8AoKX3BehTrEAXFCxcAvly5IArggDGwFIigBbEADEFi7LgJEylanUZMAFIqRox8ZOmxMAlGICCAJw-0Q+-IRJyYA85aAB+KAQ5dQoIDygxUmCUBDQWbj4oFCQoKxsAOiJBYWdOHky+DwhgOQ8EKABtAEYAXXLeSVwaUmgMit4qmrrGgHIRtszpaS4gA
мб можно попробовать сделать гвард который будет value is true
Простой item is true не работает. Дженерик гвард запрещает приводить T extends boolean к true, почему-то
boolean не extends true вроде
Да вот и я о том-же. Пока просто expect-error на return поставил и забил
Не здавайся!!
Тут работу работать надо, а не с типами ебаться =) Заказчик за фичи платит, а не за поддерживаемый код, увы
И за поддерживаемый он тоже платит, но либо сейчас и поменьше или потом но очень много
Обсуждают сегодня