2 votes

Veuillez traduire ceci en gardant les mêmes balises HTML s'il y en a : Annotations de type en typescript

interface Test {
   name: string;
   age: number;
}

const subjectObj = {
   name: "Harhsit Singh",
   age: 17,
   height: "6'1",
};

const testObj: Test = subjectObj; //? NO ERROR

const testObj2: Test = {
   name: "Harhsit Singh",
   age: 17,
   height: "6'1", //! ERROR
};

J'ai créé une interface test comme indiqué dans l'image, et un sujet de test nommé subjectObj et qui contient plus de propriétés que le type test ne contient.

Maintenant j'ai assigné mon subjectObj à la constante testObj de type test, puis déclaré une autre constante testObj2 avec le même type test et lui ai assigné le même objet, mais cette fois initialisé avec un nouvel objet de même structure que subjectObj.

Mais maintenant il me donne une erreur que 'height' n'existe pas dans le type 'test', mais n'a donné aucune erreur lorsque j'ai passé subjectObj en référence à testObj bien qu'il contienne également la propriété height.

Je ne sais pas pourquoi cela se produit, alors j'ai besoin d'une explication détaillée.

0voto

La vérification des propriétés excessives ne se produit que lorsque vous passez des littéraux d'objet - lorsque vous passez des types, vous vous heurtez au fait que TS ne vérifie jamais les types exacts, et suppose qu'un objet avec des types excessifs est ce que vous voulez dire.

Cela est vraiment dû à la culture JS dans laquelle TS est intégré. Il serait vraiment difficile de coder en TS contre les interfaces JS sinon.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X