TypeScript - Objets

Un objectest une instance qui contient un ensemble de paires clé / valeur. Les valeurs peuvent être des valeurs scalaires ou des fonctions ou même un tableau d'autres objets. La syntaxe est donnée ci-dessous -

Syntaxe

var object_name = { 
   key1: “value1”, //scalar value 
   key2: “value”,  
   key3: function() {
      //functions 
   }, 
   key4:[“content1”, “content2”] //collection  
};

Comme indiqué ci-dessus, un objet peut contenir des valeurs scalaires, des fonctions et des structures telles que des tableaux et des tuples.

Exemple: Notation littérale d'objet

var person = { 
   firstname:"Tom", 
   lastname:"Hanks" 
}; 
//access the object values 
console.log(person.firstname) 
console.log(person.lastname)

Lors de la compilation, il générera le même code en JavaScript.

La sortie du code ci-dessus est la suivante -

Tom 
Hanks

Modèle de type TypeScript

Disons que vous avez créé un objet littéral en JavaScript comme -

var person = { 
   firstname:"Tom", 
   lastname:"Hanks" 
};

Si vous souhaitez ajouter de la valeur à un objet, JavaScript vous permet d'effectuer les modifications nécessaires. Supposons que nous devions ajouter une fonction à l'objet personne plus tard, c'est ainsi que vous pouvez le faire.

person.sayHello = function(){ return "hello";}

Si vous utilisez le même code dans Typescript, le compilateur renvoie une erreur. En effet, dans Typescript, les objets concrets doivent avoir un modèle de type. Les objets dans Typescript doivent être une instance d'un type particulier.

Vous pouvez résoudre ce problème en utilisant un modèle de méthode dans la déclaration.

Exemple: modèle de type Typecript

var person = {
   firstName:"Tom", 
   lastName:"Hanks", 
   sayHello:function() {  }  //Type template 
} 
person.sayHello = function() {  
   console.log("hello "+person.firstName)
}  
person.sayHello()

Lors de la compilation, il générera le même code en JavaScript.

La sortie du code ci-dessus est la suivante -

hello Tom

Les objets peuvent également être passés en tant que paramètres de fonction.

Exemple: objets comme paramètres de fonction

var person = { 
   firstname:"Tom", 
   lastname:"Hanks" 
}; 
var invokeperson = function(obj: { firstname:string, lastname :string }) { 
   console.log("first name :"+obj.firstname) 
   console.log("last name :"+obj.lastname) 
} 
invokeperson(person)

L'exemple déclare un objet littéral. L'expression de fonction est appelée en passant l'objet personne.

Lors de la compilation, il générera le code JavaScript suivant.

//Generated by typescript 1.8.10
var person = {
   firstname: "Tom",
   lastname: "Hanks"
};

var invokeperson = function (obj) {
   console.log("first name :" + obj.firstname);
   console.log("last name :" + obj.lastname);
};

invokeperson(person);

Sa sortie est la suivante -

first name :Tom 
last name :Hanks

Vous pouvez créer et transmettre un objet anonyme à la volée.

Exemple: objet anonyme

var invokeperson = function(obj:{ firstname:string, lastname :string}) { 
   console.log("first name :"+obj.firstname) 
   console.log("last name :"+obj.lastname) 
} 
invokeperson({firstname:"Sachin",lastname:"Tendulkar"});

Lors de la compilation, il générera le code JavaScript suivant.

//Generated by typescript 1.8.10
var invokeperson = function (obj) {
   console.log("first name :" + obj.firstname);
   console.log("last name :" + obj.lastname);
};

invokeperson({ firstname: "Sachin", lastname: "Tendulkar" });
invokeperson({ firstname: "Sachin", lastname: "Tendulkar" });

Sa sortie est la suivante -

first name :Sachin 
last name :Tendulkar

Typage de canard

Dans le typage canard, deux objets sont considérés comme étant du même type si les deux partagent le même ensemble de propriétés. Le typage canard vérifie la présence de certaines propriétés dans les objets, plutôt que leur type réel, pour vérifier leur adéquation. Le concept est généralement expliqué par la phrase suivante -

«Quand je vois un oiseau qui marche comme un canard et nage comme un canard et charlatan comme un canard, j'appelle cet oiseau un canard.

Le compilateur TypeScript implémente le système de typage canard qui permet la création d'objets à la volée tout en conservant la sécurité du type. L'exemple suivant montre comment nous pouvons transmettre à une fonction des objets qui n'implémentent pas explicitement une interface mais contiennent tous les membres requis.

Exemple

interface IPoint { 
   x:number 
   y:number 
} 
function addPoints(p1:IPoint,p2:IPoint):IPoint { 
   var x = p1.x + p2.x 
   var y = p1.y + p2.y 
   return {x:x,y:y} 
} 

//Valid 
var newPoint = addPoints({x:3,y:4},{x:5,y:1})  

//Error 
var newPoint2 = addPoints({x:1},{x:4,y:3})