【问题标题】:What is the benefit of union types in Typescript [duplicate]Typescript中联合类型的好处是什么[重复]
【发布时间】:2020-04-20 23:27:28
【问题描述】:

我在学习 Typescript 时遇到了联合类型这个术语。据我了解,它允许我们对我们正在处理的类型或特定值有某种“限制”。但问题是这个限制有什么好处,我承认,它会导致安全代码,但安全代码有什么好处。

【问题讨论】:

  • 安全代码有什么好处”感觉这个问题自己回答了。除了联合类型,你认为 TypeScript 的用途是什么?
  • TypeScript 中的整个类型系统是为了我们编写更安全的代码而引入的。安全代码的好处是安全代码。您已在问题中回答了您的问题。
  • @SebastianKaczmarek,对不起,这个问题似乎有点奇怪,但我有点无法理解安全代码背后的含义。请您举一些例子来说明安全代码的重要性。
  • function add(a, b) { return a + b } vs function add(a: number, b: number) : number { return a + b; } 当你打电话给add("banana", {hello: "world"})
  • @VLAZ 给出了非常简单和很好的例子。如果没有类型声明,没有什么能阻止您使用非数字参数调用 add,这可能导致您的应用程序出现意外行为并可能难以调试问题。对于严格声明为数字的类型,您不能再使用非数字参数调用add,因为会在解析级别引发错误。声明类型使您的代码更安全。

标签: typescript


【解决方案1】:

在像 javascript 这样的动态类型语言中,有时很难找到运行时错误的原因。使用类型系统,您会定期(例如在调用函数时)检查参数的类型并确保它们的结构符合您的预期。这样,您通常会更容易理解错误的错误,从而在调试时节省一些时间,此外您还可以检测到您不会注意到的错误。

例如,考虑函数进行一些数值计算,而您不小心将nothing 传递给了该函数。无需担心函数中的奇怪错误,您会立即知道错误发生在较早之前。

因为 javascript Web API 经常使用动态类型,例如find 可能会返回 undefined 或找到的元素,TypeScript 必须使用 UnionTypes 来允许这样做。

【讨论】:

  • "TypeScript 必须使用 UnionTypes 来稍微“削弱”类型系统以允许这样做。" 我不同意 - 我会说联合类型导致 更强的类型系统。甚至 Haskell 也有联合类型,它是一种强类型语言。
  • 我将删除“弱化”这个词(这就是我使用引号的原因)。
猜你喜欢
  • 2015-05-09
  • 2021-04-11
  • 2021-06-13
  • 2020-04-28
  • 2019-08-01
  • 1970-01-01
  • 2020-10-02
  • 2019-08-28
  • 2013-05-01
相关资源
最近更新 更多