After we have defined a class, we know what that object will look like once it's created, but first it needs to be constructed! (We know what strings and numbers do in theory, but until they are declared and initialized, we can't do anything with them!)
A special function that allows us to:
Because an object's properties needs to be initialized before it can be used, a constructor will initialize properties while making the object!
A constructor is just a special method; it will be named constructor, also has a variable named this, and the return type is an object of its class.
Check out the two examples below:
class Mascot {
name: string = "?";
school: string = "?";
species: string = "?";
yearBorn: number = 0;
}
According to this class definition, we are able to create 'Mascot' objects. Each mascot, on construction, will have default properties: 'name' "?", 'school' "?", 'species' "?", and 'yearBorn' 0...So let's make some mascots!
let rameses: Mascot;
//a new object 'rameses' is declared
rameses = new Mascot();
//a new mascot is constructed!
let theEnemy = new Mascot();
...but right now we dont know anything about Rameses! The default property values are all "?" and 0...what if we wanted to give Rameses some property values? How do we do that without manually assigning each individual property? (as seen below)
// ew this is gross!
rameses.name = "RAMESES";
rameses.school = "UNC";
rameses.species = "Ram";
rameses.yearBorn = 1789;
theEnemy.name = "The Blue Deveil";
theEnemy.school = "Duke";
theEnemy.species = "Demon";
theEnemy.yearBorn = 1838;
Check out example 2! Which uses a constructor to construct its objects rather than manually assigning all of the properties
Check out the pages on Classes and Properties for more details on how this works!
Now we have fully created a couple Mascot objects, we can now use and manipulate them!
//the class TwitterProfile has 3 parameters and a constructor
class TwitterProfile {
//properties
_name: String;
_followers: number;
_verified: boolean = false;
constructor(name: string, followers: number, verification: boolean){
this._name = name;
this._followers = followers;
this._verified = verification;
}//end of constructor
//methods would go here
}//end of class
let myProfile: TwitterProfile = new TwitterProfile ("Kris", 110, true);
print(myProfile._name + " has " + myProfile._followers "on Twitter!");
print(myProfile._name + "is verified: " + _verified);
//What will be printed?
//"Kris has 110 followers on Twitter!"
//"Kris is verified: true