可以在TS中将undefined强制转换为void吗?

问题描述 投票:1回答:2

TLDR;

这样可以吗?还是不好的做法?

function isUndefined (payload: any): payload is undefined | void {
  return payload === undefined
}

上下文

在TypeScript中,我有一个可以返回某些内容或undefinedvoid的函数。

类似于事件处理程序,可以返回修改后的有效负载,或者开发人员可以选择不返回任何内容或在它们不会修改有效负载的情况下未定义:

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
}

这解决了我的问题,但我的问题是:

这样可以吗?还是不好的做法?

TLDR;这个可以吗?还是不好的做法?函数isUndefined(有效载荷:任意):有效载荷未定义|无效{返回有效载荷===未定义}上下文在TypeScript中,我有一个函数可以...

javascript typescript casting void void-safety
2个回答
0
投票

void不是undefinedvoid表示没有返回值。 undefined是在运行时未定义的值的类型。


0
投票

我认为您正在使它变得更加复杂。返回void的函数可以:

© www.soinside.com 2019 - 2024. All rights reserved.