TypeScript/tests/baselines/reference/objectCreationOfElementAccessExpression.js

140 lines
4.3 KiB
TypeScript

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