为什么 () => void 返回一些东西?

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

我知道下面的内容并不意味着返回“类型”为空。我的理解是 voidFunc 不返回任何内容,因为它返回“void”。为什么它返回任何类型?

type voidFunc = () => void

const myFunc: voidFunc = () => {
  return 'hello'
}

与下面的写法有什么不同?

type voidFunc = () => any

typescript void
1个回答
4
投票

参见函数的可分配性

返回类型为void

函数的 void 返回类型可能会产生一些异常,但是 预期的行为。

返回类型为

void
的上下文类型不会 not 强制 函数返回某些东西。另一种说法是 具有
void
返回类型 (
type vf = () => void
) 的上下文函数类型在实现时可以返回任何其他值,但它将 忽略。

因此,

() => void
类型的以下实现是 有效:

type voidFunc = () => void;
 
const f1: voidFunc = () => {
  return true;
};
 
const f2: voidFunc = () => true;
 
const f3: voidFunc = function () {
  return true;
};

当这些函数之一的返回值被分配给 另一个变量,它将保留 void 类型:

const v1 = f1();
 
const v2 = f2();
 
const v3 = f3();
© www.soinside.com 2019 - 2024. All rights reserved.