Inheritance 删除接口中的(专用)签名

Inheritance 删除接口中的(专用)签名,inheritance,typescript,Inheritance,Typescript,是否可以在TypeScript中删除接口中继承的签名(专门化) interface ComplexNumber { divideBy(b: number): ComplexNumber; } interface RealNumber extends ComplexNumber { delete divideBy(0); rationalize(): [number, number]; ... } 据我所知这是不可能的 但是,您可能会对可选参数/方法感兴趣。据我所知,您希望对一

是否可以在TypeScript中删除接口中继承的签名(专门化)

interface ComplexNumber {
  divideBy(b: number): ComplexNumber;
}

interface RealNumber extends ComplexNumber {
  delete divideBy(0);
  rationalize(): [number, number];
  ...
}

据我所知这是不可能的

但是,您可能会对可选参数/方法感兴趣。据我所知,您希望对一个类使用接口RealNumber,该类没有方法dividedBy的实现。如果这是真的,下一件事可能对你有用:

interface ComplexNumber {
  divideBy?(b: number): ComplexNumber;
}

interface RealNumber extends ComplexNumber {
  rationalize(): [number, number];
  ...
}

请注意方法名后的“符号“divideBy”(这意味着此方法是可选的,类可能有此方法,但它们也可能没有此方法,因为它是可选的)。

尽管它看起来像是一种方法-不是,请参阅此处的更多信息:嗯,true:)尽管它看起来很有用
delete divideBy()
不是有效的语法,但我发明它只是为了演示我想要实现的目标。@PeterVarga哦,对不起,忘了删除这一行。我的代码中的主要内容是一行:
divideBy?(b:number):ComplexNumber