【发布时间】:2023-01-18 04:11:23
【问题描述】:
如果我像这样声明一个类:
class Dog {
a: string;
b: string;
c: string;
}
TSC 会抱怨 a、b 和 c 没有初始化。但是,如果我这样做:
interface Animal {
a: string;
b: string;
}
interface Dog extends Animal {
c: string;
}
class Dog {
constructor() {}
}
它不关心属性是否被初始化。为什么?
【问题讨论】:
-
Merging 这样的目的是描述现有类的外部扩充,而不是检查类主体本身......如果你想检查它,你可能会写
class Dog extends Animal(或implements Animal)然后初始化属性在班级本身。这是否完全解决了这个问题?如果是这样,我可以写一个答案来解释;如果没有,我错过了什么? -
类不能扩展类型。我可以改用 implements,但我不想重用这些属性。
标签: typescript