TypeScript: classes,objects ,interface

1.Classe

Avec typeScript on peut programmer avec la notion du POO ,
  1. classes
  2. Constructeur
  3. Méthodes
  4. Héritage
  5. ...

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