为什么有时我应该使用联合而不是重载?

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

今天,我正在学习 TypeScript 重载,我在 TypeScript 的文档中看到了这样的内容:

function fn(x: string): Moment;
function fn(x: number): Moment;
function fn(x: number | string) {
  // When written with separate overloads, incorrectly an error
  // When written with union types, correctly OK
  return moment().utcOffset(x);
}

参考资料如下: 注意事项

不正确的错误是什么意思?我确实在我的机器上执行了这段代码,它没有抛出错误。 谁能为我解释一下这个?谢谢!

typescript
1个回答
0
投票

TypeScript 文档提到“不正确的错误”,因为 TypeScript 检查重载的实现方式。

  • 前两行定义了如何调用该函数。
  • 第三行实现该函数,它必须正确处理所有重载。

TypeScript 检查实现是否与所有重载匹配。 如果 TypeScript 无法确认

moment().utcOffset(x)
同时支持
number
string
,它可能会错误地抛出错误。

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