为什么在typescript中实现接口时必须重新声明类型

为什么在typescript中实现接口时必须重新声明类型,typescript,Typescript,当我已经在接口中声明类型时,为什么typescript抛出错误 游乐场: 您必须在类中定义x的实现。接口定义仅定义对象的“形状” TypeScript无法知道如何实现x。例如,不使用字段,您可以使用getter、setter和backing字段有效地实现A接口: B类实现了{ private x:number | null=null; get x():数字| null{ 把这个还给我; }; 设置x(值:数字|空){ 这是._x=值; } setX(val:编号){ 这个.x=val; } }

当我已经在接口中声明类型时,为什么typescript抛出错误

游乐场:


您必须在类中定义
x
的实现。接口定义仅定义对象的“形状”

TypeScript无法知道如何实现
x
。例如,不使用字段,您可以使用getter、setter和backing字段有效地实现
A
接口:

B类实现了{
private x:number | null=null;
get x():数字| null{
把这个还给我;
};
设置x(值:数字|空){
这是._x=值;
}
setX(val:编号){
这个.x=val;
}
}

键入脚本。

当类实现接口时,这并不意味着接口的属性已经在类中声明。该接口在这里为您所做的只是在类中检查您的类型:

好:

不正常:

class B implements A {
    x: number | string= "";
    ...
}
但是,如果不在类中声明它,就不能使用“x”,并且在类中已将其声明为与类型号| null匹配的null。接口仅用于检查类中使用的类型,而不是进一步的实现

class B implements A {
    x: number | string= "";
    ...
}