Я пытаюсь написать простую функцию, которая возвращает defaultValue
, если value === undefined
.
Функция супер проста:
const defaultIfUndefined = (value, defaultValue) => {
return value === undefined ? defaultValue : value;
}
Но вывод из набора / тип не будет работать.
Функция должна просто удалить undefined
из типов.
Я пробовал несколько разных вещей, но всегда есть какая-то ошибка.
1
const defaultIfUndefined = <T>(value: T, defaultValue: Exclude<T, undefined>): Exclude<T, undefined> => {
return value === undefined ? defaultValue : value;
}
2
const defaultIfUndefined = <T, U extends Exclude<T, undefined>>(value: T, defaultValue: U): U => {
return value === undefined ? defaultValue : value;
}
3.
const defaultIfUndefined = <T, U extends T | undefined>(value: U, defaultValue: Exclude<U, undefined>): Exclude<U, undefined> => {
return value === undefined ? defaultValue : value;
}
4
const defaultIfUndefined = <T, U extends T | undefined, V extends Exclude<U, undefined>>(value: U, defaultValue: V): V => {
return value === undefined ? defaultValue : value;
}
Первый пример работает нормально, пока я return ... as any
.
Но есть ли способ заставить это работать без as any
?
-
Ссылка на TypeScript Playground