TLDR;
Это нормально? Или это плохая практика?
function isUndefined (payload: any): payload is undefined | void {
return payload === undefined
}
Контекст
В TypeScript у меня есть функция, которая может возвращать либо что-то, либо undefined
или void
.
Что-то например, обработчик событий, который может вернуть измененную полезную нагрузку, или разработчик может выбрать ничего не возвращать или не определять в случае, если они не изменят полезную нагрузку:
function eventHandler <T extends {[key: string]: any}> (payload: T): Modified<T> | undefined | void {
// ... implementation
}
Тогда у меня есть средство проверки типа, которое должно проверить, он возвращает что-то отличное от void или undefined:
const result = eventHandler(payload)
if (result !== undefined) {
// we have a modified payload!
}
Однако в приведенном выше фрагменте я получаю сообщение об ошибке, поскольку он говорит, что, хотя result !== undefined
он все еще может быть void
?
На мой взгляд, я думаю, что это странно, потому что void
должно быть таким же, как undefined
.
Так что я сделал этот тип проверки, который решает это:
function isUndefined (payload: any): payload is undefined | void {
return payload === undefined
}
Это решает мой проблема, но мой вопрос:
Это нормально? Или это плохая практика?