TypeScript: classes,objects ,interface
1.Classe
Avec typeScript on peut programmer avec la notion du POO ,
- classes
- Constructeur
- Méthodes
- Héritage
- ...
Exemple 1:Classe
class Client {
//attribut
nom:string;//par défaut c'est public
prenom:string;
age:number;
}
//le constructeur vide est existe par défaut
const client=new Client();
//on peut accéder au attribut de classe parcque sont déclaré public dans leur classe
client.nom="abc";
client.prenom="xyz";
client.age=30;
console.log(client);//=>Client { nom: 'abc', prenom: 'xyz', age: 30 }
console.log(client.prenom);//=>xyz
Exemple :Visiblity,constructor ,getters ,setters
class Client {
private nom:string;
private prenom:string;
private age:number;
constructor(nom: string, prenom: string,age:number ) {
this.nom=nom;
this.prenom=prenom;
this.age=age;
}
//getters
getNom():string{
return this.nom;
}
getPrenom():string{
return this.prenom;
}
getAge():number{
return this.age;
}
//setters
setNom(nom:string):void{
this.nom=nom;
}
setPrenom(prenom:string):void{
this.prenom=prenom;
}
setAge(age:number):void{
this.age=age;
}
//des méthodes
methode1():string{
return "nom "+this.nom+" prenom"+this.prenom+" age: "+this.age;
}
}
const client=new Client("ab","cd",27);
//client.nom="abc";//=>error TS2341: Property 'nom' is private
console.log(client.getNom());//=>ab
client.setAge(30);
console.log(client.methode1());//=>nom ab prenomcd age: 30
Exemple :Héritage
class Client {
private nom:string;
private prenom:string;
private age:number;
constructor(nom: string, prenom: string,age:number ) {
this.nom=nom;
this.prenom=prenom;
this.age=age;
}
//getters
getNom():string{
return this.nom;
}
getPrenom():string{
return this.prenom;
}
getAge():number{
return this.age;
}
//setters
setNom(nom:string):void{
this.nom=nom;
}
setPrenom(prenom:string):void{
this.prenom=prenom;
}
setAge(age:number):void{
this.age=age;
}
//des méthodes
methode1():string{
return "nom "+this.nom+" prenom"+this.prenom+" age: "+this.age;
}
}
class SuperClient extends Client{
private points:number;
constructor(nom: string, prenom: string,age:number,points ) {
//appeler le constructeur de la classe mère
super(nom,prenom,age);
this.points=points;
}
methode2():string{
return "nom "+this.getNom()+" points"+this.points;
}
}
const superClient=new SuperClient("ab","cd",27,522);
console.log(superClient);
Exemple :Interface
//interface 1
interface IPeronne {
//attributs
name: string;
//signature des méthodes
methode1():void;
}
//interface 2
interface IClient {
//attributs
numero: number;
}
//création d'une classes qui implementes deux interfaces
class Employee implements IPeronne, IClient {
//attributs des interfaces
numero: number;
name: string;
//attributs de la classes
tel:string;
constructor(numero: number, name:string,tel:string) {
this.numero = numero;
this.name = name;
this.tel=tel;
}
//redéfinition de la méthode de l'interface
methode1(): void {
console.log("Name = " + this.name + ", Numero = " + this.numero+ ", tel = " + this.tel);
}
}
let p:IPeronne = new Employee(1, "abc","0645775");
console.log(p.methode1()); //=>Name = abc, Numero = 1, tel = 0645775
Exemple :Object
var Client = {
nom:"abc",
prenom:"xy",
methode1:function() {
alert("hi" +this.nom);
}
}
//on peut rechanger le code d'une méthoes
Client.methode1 = function() {
//do something
}
console.log(Client.nom) //=>abc
//on peut changer la valeur d'un attribut de l'objet
Client.prenom="hi";
console.log(Client.prenom);//=>hi
Client.tel="0554455";//=>Error :Property 'tel' does not exist