首页 > 解决方案 > TypeScript:无法在子类上调用超级方法

问题描述

当我尝试覆盖父方法并在内部使用 super 时,出现此错误:

错误 TS2340:只能通过“super”关键字访问基类的公共和受保护方法。

    return super.toJson(["password", ...blacklist]);

这是一个例子:

abstract class BaseUser {
    name: string;

    constructor(name: string) {
        this.name = name;
    }

    toJson = () => {
        return Object.assign({}, this);
    }
}

class MyUser {
   ...
   toJson = (blacklist) => {
       ...
       const obj = super.toJson();
       ... 
   }
}

不知道我做错了什么...

标签: typescriptinheritanceabstract-classsuper

解决方案


正如@Titian Cernicova-Dragomir 在评论中所说,您应该改用方法。您可以检查以下答案:

继承方法调用触发 Typescript 编译错误

在 TypeScript 中执行继承时出错


推荐阅读