class apple{
seed: number;
color: string;
}
class orange{
color: string;
harvested: boolean;
}
class fruit{
fruit1: apple;
fruit2: orange;
currentfruit: boolean;
constructor{
//something
}
getFruit(){
if(!this.currentfruit){
return this.fruit1;
}else{
return this.fruit2;
}
}
showFruitData(){
???
}
}
在上面的例子中,是否有一种方法来编写水果类,以便我可以替换???用:
的console.log(this.getFruit.color);
到目前为止,我能够管理的最接近的是:
的console.log(this.getFruit()的颜色。);
我真的不满意
答案 0 :(得分:2)
这看起来像一个反模式。也许你应该使用访问者或存储库模式之类的东西。
interface IFruit {
color: string;
}
class Apple impliments IFruit {
seed: number;
color: string;
}
class Orange impliments IFruit {
color: string;
harvested: boolean;
}
class FruitRepository {
repository: IFruit[];
selectedFruitIndex: number;
get selectedFruit() {
return this.repository[this.selectedFruitIndex];
}
get showFruitData() {
console.log(this.selectedFruit.color);
}
}
关于风格的说明。甚至Crockford说新的JavaScript对象应该是PascalCase而不是camelCase。所以类,构造函数和类型一般应该是PascalCase。