为什么打字稿中不赞成使用“类型”?

时间:2019-09-15 06:04:56

标签: javascript typescript eslint lint tslint

我有一个type声明,如下所示:

type Position = {
    white: number[];
    black: number[];
}

当我对项目进行整理时,会看到此错误:

error  Use an interface instead of a type literal  @typescript-eslint/prefer-interface

有关导致错误的规则的文档说:

  

与类型文字相比,通常首选接口,因为   接口可以实现,扩展和合并。

该规则在TSLint和ESLint之间是通用的。我知道interfacetype更强大,但是当我不需要interface优势并且type就足够了时,为什么不使用它呢?使用type还有其他缺点吗?

2 个答案:

答案 0 :(得分:2)

在Typescript中使用type似乎没有问题,并且该规则已被上面@CertainPerformance注释。我发现该规则已被弃用,removed从版本2.2.0开始。

我使用@typescript-eslint/eslint-plugin@typescript-eslint/parser。我将它们都升级到了2.2.0版,并且摆脱了linter错误。

答案 1 :(得分:0)

TypeInterface 之间的区别仅在于可扩展性(不完全是唯一的区别,而是文档中提到的主要区别)。我认为没有理由再保留 Type,也许这就是它被弃用的原因。

<块引用>

类型别名和接口之间的区别

类型别名和接口非常相似,在很多情况下,您可以在它们之间自由选择。接口的几乎所有功能都可以在类型中使用,关键区别在于不能重新打开类型以添加​​新属性与始终可扩展的接口。

参考: https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#differences-between-type-aliases-and-interfaces