【发布时间】:2021-12-05 01:20:12
【问题描述】:
我可以这样做:
enum DogsKinds {
Labrador,
Aski
}
class Dog {
name: string;
kind: DogKinds;
constructor() {}
}
然后初始化一个狗对象:
const dog = new Dog();
但是我可以对界面做同样的事情:
interface Dog {
name: string;
kind: DogsKind;
}
const dog: Dog = {
name: 'some name',
kind: DogsKinds.Labrador
}
并获得相同的结果 - 更容易。
有什么区别,何时使用接口和何时使用类,是否有最佳实践或经验法则?
界面似乎更容易使用,如果我错了请纠正我。
【问题讨论】:
-
您也可以在可能的情况下完全省略两者(就像我喜欢的那样),并使用纯对象文字和推断类型。
-
但是以后不能再用了
-
@Raz 您的演示代码也没有显示重用示例。尝试添加它,构造函数的优势应该会变得更加明显
-
顺便说一句,您需要修复“属性'name'没有初始化器,并且没有在构造函数中明确分配。属性'kind'没有初始化器,也没有明确分配在构造函数。”编译器吐出的错误
-
请注意,在 TypeScript 中,每个
class声明都会声明一个接口(一种类型)并定义一个class对象。
标签: javascript typescript class oop interface