【发布时间】:2020-06-27 06:02:33
【问题描述】:
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!
}
但是,上面的 sn-p 是否会出现错误,因为它说即使 result !== undefined 它仍然可以是 void?
在我看来,我认为这很奇怪,因为void 应该与undefined 相同。
所以我做了这个类型检查器来解决它:
function isUndefined (payload: any): payload is undefined | void {
return payload === undefined
}
这解决了我的问题,但我的问题是:
这样好吗?还是不好的做法?
【问题讨论】:
标签: javascript typescript casting void void-safety