gpt4 book ai didi

javascript - 什么时候在流程中使用接口(interface)而不是类型别名?

转载 作者:行者123 更新时间:2023-12-03 00:08:38 24 4
gpt4 key购买 nike

interfacetype 声明似乎做了同样的事情。你什么时候使用其中一种而不是另一种?

type Fooable = {
foo(): string
}

对比

interface Fooable {
foo(): string
}

最佳答案

这是一个很好的问题。理想情况下,接口(interface)和对象类型之间没有区别。在实现时,它们之间存在一些(通常是细微的)差异。

最大的区别是 Flow 将接口(interface)上声明的方法视为“只读”。这允许子类型是协变的。方法,这是继承层次结构中非常常见的模式。

随着时间的推移,我希望看到 Flow 统一这些概念,但在此之前,这是我在接口(interface)和对象类型之间进行选择的经验法则:

  • 使用对象类型来描述应用中传递的大部分数据包,例如 React 组件的 props/state、Flux/Redux 操作、类似 JSON 的内容。
  • 使用接口(interface)来描述类似服务的接口(interface)。通常这些主要是方法,例如 Rx.Observable/Observer、Flux/Redux 存储、抽象接口(interface)。如果一个类实例可能是您的类型的居民,那么您可能需要一个接口(interface)。

希望这有帮助!

关于javascript - 什么时候在流程中使用接口(interface)而不是类型别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36904201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com