Javascript 在typescript中基类的子类中实现的调用方法 //BaseClass.ts 阶级基础{ connstuctor(){} CallSubclass方法=()=>{ 返回此.subMethod(); } } //子类 类子扩展基{ 构造函数(){ 超级(); } 子方法=()=>{ console.log('Iam子类方法') } }

Javascript 在typescript中基类的子类中实现的调用方法 //BaseClass.ts 阶级基础{ connstuctor(){} CallSubclass方法=()=>{ 返回此.subMethod(); } } //子类 类子扩展基{ 构造函数(){ 超级(); } 子方法=()=>{ console.log('Iam子类方法') } },javascript,typescript,es6-class,Javascript,Typescript,Es6 Class,这在typescript中可能吗? 基类抱怨没有定义子方法。 这在没有类封装的情况下是有效的,我一直在寻找一种解决方法,因为我的大部分代码库都是ES6+语法的如果您的Base类实现依赖于一个未定义(也无法定义)的方法,那么Base是抽象的,应该这样声明: abstract class Base { abstract subMethod(): any; callSubClassMethod = () => { return this.subMethod(); } }

这在typescript中可能吗? 基类抱怨没有定义子方法。
这在没有类封装的情况下是有效的,我一直在寻找一种解决方法,因为我的大部分代码库都是ES6+语法的

如果您的
Base
类实现依赖于一个未定义(也无法定义)的方法,那么
Base
抽象的
,应该这样声明:

abstract class Base {

  abstract subMethod(): any;

  callSubClassMethod = () => {
    return this.subMethod();
  }

} 
如果可以定义该方法,使其执行一些默认操作或返回一些默认值,则只需在
Base
中定义它即可:

class Base {

  subMethod() {
      // do some default thing, for example, nothing
  }

  callSubClassMethod = () => {
    return this.subMethod();
  }

} 

如果您的
Base
类实现依赖于未定义(也无法定义)的方法,则
Base
abstract
,应声明为:

abstract class Base {

  abstract subMethod(): any;

  callSubClassMethod = () => {
    return this.subMethod();
  }

} 
如果可以定义该方法,使其执行一些默认操作或返回一些默认值,则只需在
Base
中定义它即可:

class Base {

  subMethod() {
      // do some default thing, for example, nothing
  }

  callSubClassMethod = () => {
    return this.subMethod();
  }

} 

在基类中定义subMethod(如果需要,它可以是只执行
返回的noop),然后在子类中重写它以创建实际实现。在类型化语言中,您不能调用未在类或父类中定义的方法。想象一下,拥有一个Base类型的对象并对其调用CallSubclass方法?您希望发生什么?在基类中定义subMethod(如果需要,它可以是一个只返回
的noop),然后在子类中重写它以创建实际的实现。在类型化语言中,您不能调用未在类或父类中定义的方法。想象一下,拥有一个Base类型的对象并对其调用CallSubclass方法?你希望发生什么?