我有一个很大的代码库,其中某些类成员被设置两次-一次作为方法,另一种在构造函数中显式设置。
这是一个可能看起来像的例子:
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级别上将方法声明强制为规范?
答案 0 :(得分:1)
受到Aaron Beall的评论的启发。这使hasCape为属性,即函数,为只读。然后,从构造函数分配打字稿时,打字稿编译器会引发错误。
public get hasCape() {
return () => this.name === 'Batman' || this.name === 'Wonder Woman';
}