140 lines
4.3 KiB
JavaScript
140 lines
4.3 KiB
JavaScript
//// [objectCreationOfElementAccessExpression.ts]
|
|
class Food {
|
|
private amount: number;
|
|
constructor(public name: string) {
|
|
this.amount = 100;
|
|
}
|
|
public eat(amountToEat: number): boolean {
|
|
this.amount -= amountToEat;
|
|
if (this.amount <= 0) {
|
|
this.amount = 0;
|
|
return false;
|
|
}
|
|
else {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
class MonsterFood extends Food {
|
|
constructor(name: string, public flavor: string) {
|
|
super(name);
|
|
}
|
|
}
|
|
class IceCream extends MonsterFood {
|
|
private isDairyFree: boolean;
|
|
constructor(public flavor: string) {
|
|
super("Ice Cream", flavor);
|
|
}
|
|
}
|
|
class Cookie extends MonsterFood {
|
|
constructor(public flavor: string, public isGlutenFree: boolean) {
|
|
super("Cookie", flavor);
|
|
}
|
|
}
|
|
class PetFood extends Food {
|
|
constructor(name: string, public whereToBuy: number) {
|
|
super(name);
|
|
}
|
|
}
|
|
class ExpensiveOrganicDogFood extends PetFood {
|
|
constructor(public whereToBuy: number) {
|
|
super("Origen", whereToBuy);
|
|
}
|
|
}
|
|
class ExpensiveOrganicCatFood extends PetFood {
|
|
constructor(public whereToBuy: number, public containsFish: boolean) {
|
|
super("Nature's Logic", whereToBuy);
|
|
}
|
|
}
|
|
class Slug {
|
|
// This is NOT a food!!!
|
|
}
|
|
|
|
// ElementAccessExpressions can only contain one expression. There should be a parse error here.
|
|
var foods = new PetFood[new IceCream('Mint chocolate chip') , Cookie('Chocolate chip', false) , new Cookie('Peanut butter', true)];
|
|
var foods2: MonsterFood[] = new PetFood[new IceCream('Mint chocolate chip') , Cookie('Chocolate chip', false) , new Cookie('Peanut butter', true)];
|
|
|
|
|
|
//// [objectCreationOfElementAccessExpression.js]
|
|
var __extends = this.__extends || function (d, b) {
|
|
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
|
function __() { this.constructor = d; }
|
|
__.prototype = b.prototype;
|
|
d.prototype = new __();
|
|
};
|
|
var Food = (function () {
|
|
function Food(name) {
|
|
this.name = name;
|
|
this.amount = 100;
|
|
}
|
|
Food.prototype.eat = function (amountToEat) {
|
|
this.amount -= amountToEat;
|
|
if (this.amount <= 0) {
|
|
this.amount = 0;
|
|
return false;
|
|
}
|
|
else {
|
|
return true;
|
|
}
|
|
};
|
|
return Food;
|
|
})();
|
|
var MonsterFood = (function (_super) {
|
|
__extends(MonsterFood, _super);
|
|
function MonsterFood(name, flavor) {
|
|
_super.call(this, name);
|
|
this.flavor = flavor;
|
|
}
|
|
return MonsterFood;
|
|
})(Food);
|
|
var IceCream = (function (_super) {
|
|
__extends(IceCream, _super);
|
|
function IceCream(flavor) {
|
|
_super.call(this, "Ice Cream", flavor);
|
|
this.flavor = flavor;
|
|
}
|
|
return IceCream;
|
|
})(MonsterFood);
|
|
var Cookie = (function (_super) {
|
|
__extends(Cookie, _super);
|
|
function Cookie(flavor, isGlutenFree) {
|
|
_super.call(this, "Cookie", flavor);
|
|
this.flavor = flavor;
|
|
this.isGlutenFree = isGlutenFree;
|
|
}
|
|
return Cookie;
|
|
})(MonsterFood);
|
|
var PetFood = (function (_super) {
|
|
__extends(PetFood, _super);
|
|
function PetFood(name, whereToBuy) {
|
|
_super.call(this, name);
|
|
this.whereToBuy = whereToBuy;
|
|
}
|
|
return PetFood;
|
|
})(Food);
|
|
var ExpensiveOrganicDogFood = (function (_super) {
|
|
__extends(ExpensiveOrganicDogFood, _super);
|
|
function ExpensiveOrganicDogFood(whereToBuy) {
|
|
_super.call(this, "Origen", whereToBuy);
|
|
this.whereToBuy = whereToBuy;
|
|
}
|
|
return ExpensiveOrganicDogFood;
|
|
})(PetFood);
|
|
var ExpensiveOrganicCatFood = (function (_super) {
|
|
__extends(ExpensiveOrganicCatFood, _super);
|
|
function ExpensiveOrganicCatFood(whereToBuy, containsFish) {
|
|
_super.call(this, "Nature's Logic", whereToBuy);
|
|
this.whereToBuy = whereToBuy;
|
|
this.containsFish = containsFish;
|
|
}
|
|
return ExpensiveOrganicCatFood;
|
|
})(PetFood);
|
|
var Slug = (function () {
|
|
function Slug() {
|
|
}
|
|
return Slug;
|
|
})();
|
|
// ElementAccessExpressions can only contain one expression. There should be a parse error here.
|
|
var foods = new PetFood[new IceCream('Mint chocolate chip'), Cookie('Chocolate chip', false), new Cookie('Peanut butter', true)];
|
|
var foods2 = new PetFood[new IceCream('Mint chocolate chip'), Cookie('Chocolate chip', false), new Cookie('Peanut butter', true)];
|