TypeScript/tests/cases/compiler/objectCreationOfElementAccessExpression.ts
2014-07-12 17:30:19 -07:00

55 lines
1.6 KiB
TypeScript

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)];