TLDR;
这个可以吗?或者这是不好的做法?
function isUndefined (payload: any): payload is undefined | void {
return payload === undefined
}
语境
在 TypeScript 中,我有一个函数可以返回 something 或undefined
or 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
}
这解决了我的问题,但我的问题是:
这个可以吗?或者这是不好的做法?