TypeScript-如何防止在构造函数中使用变量覆盖类方法

时间:2019-06-24 17:34:09

标签: javascript typescript eslint tslint

我有一个很大的代码库,其中某些类成员被设置两次-一次作为方法,另一种在构造函数中显式设置。

这是一个可能看起来像的例子:

class SuperHero {
    public name: string;

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

        // This line is a problem.
        this.hasCape = () => {
            return this.name === 'Batman';
        };
    }

    // I want this to be the canonical implementation.
    public hasCape() {
        return this.name === 'Batman' || this.name === 'Wonder Woman';
    }
}

看来public readonly hasCape()是无效的语法。

是否有一种方法可以在编译器或linter级别上将方法声明强制为规范?

1 个答案:

答案 0 :(得分:1)

受到Aaron Beall的评论的启发。这使hasCape为属性,即函数,为只读。然后,从构造函数分配打字稿时,打字稿编译器会引发错误。

    public get hasCape() {
        return () => this.name === 'Batman' || this.name === 'Wonder Woman';
    }