我有一个type
声明,如下所示:
type Position = {
white: number[];
black: number[];
}
当我对项目进行整理时,会看到此错误:
error Use an interface instead of a type literal @typescript-eslint/prefer-interface
有关导致错误的规则的文档说:
与类型文字相比,通常首选接口,因为 接口可以实现,扩展和合并。
该规则在TSLint和ESLint之间是通用的。我知道interface
比type
更强大,但是当我不需要interface
优势并且type
就足够了时,为什么不使用它呢?使用type
还有其他缺点吗?
答案 0 :(得分:2)
在Typescript中使用type
似乎没有问题,并且该规则已被上面@CertainPerformance注释。我发现该规则已被弃用,removed从版本2.2.0
开始。
我使用@typescript-eslint/eslint-plugin
和@typescript-eslint/parser
。我将它们都升级到了2.2.0
版,并且摆脱了linter错误。
答案 1 :(得分:0)
Type
和 Interface
之间的区别仅在于可扩展性(不完全是唯一的区别,而是文档中提到的主要区别)。我认为没有理由再保留 Type
,也许这就是它被弃用的原因。
类型别名和接口之间的区别
类型别名和接口非常相似,在很多情况下,您可以在它们之间自由选择。接口的几乎所有功能都可以在类型中使用,关键区别在于不能重新打开类型以添加新属性与始终可扩展的接口。