function LogBook() { this.trips = []; } LogBook.prototype.addTrip = function (trip) { this.trips = this.trips.concat([trip]); //immutable way of adding - Angular favours this. // Alternatvie to this.trips.push(trip); }; LogBook.prototype.removeTrip = function (trip) { this.trips = this.trips.filter(function (log) { return trip !== log; }) } var myLog = new LogBook(); myLog.addTrip(43); myLog.addTrip(7); myLog.addTrip(29); console.log("My Log: ", myLog); console.log(typeof (myLog)); console.log("My Trips: ", myLog.trips); myLog.removeTrip(7); console.log("My Trips: ", myLog.trips); // ES6/2015 class - TS Classes class ShoppingList { groceries: string[]; // array of string constructor() { this.groceries = []; } // Public property on ShoppingList class addItem(item) { // Use ES6 spread operator to add item, alternative to concat and push this.groceries = [...this.groceries, item]; } removeItem(item) { // implicit return using an ES6 arrow function this.groceries = this.groceries.filter((grocery) => item !== grocery); // same as in Trips } } const myList = new ShoppingList(); myList.addItem("Apple"); myList.addItem("Banana"); console.log(myList.groceries); myList.removeItem("Apple"); console.log(myList.groceries);