Explica este código TypeScript
Dificultad: Básico
const obj = {
id: 1,
title: "test",
}
obj.description = "hello";
console.log(obj); // 🤔
- A.
{ description: "hello", id:1, title: "test" }
- B.
TypeError
- C.
{ id:1, title: "test" }
- D.
ReferenceError
Respuesta en el primer comentario.
Top comments (1)
Respuesta
✅ A.
{ description: "hello", id:1, title: "test" }
La respuesta de este reto es un poco trampa y vamos a explicar por que.
El código del reto tanto en JavaScript como en TypeScript se ejecuta sin ningún error, peeero en TypeScript nos marca una advertencia:
Property 'description' does not exist on type '{ id: number; title: string; }'
; ¿pero por que pasa esto?En TypeScript los objetos literales son como interfaces anónimas, lo que quiere decir que deben cumplir el contrato que las contiene.
En nuestro ejemplo, el objeto
obj
es del tipo{ id: number; title: string; }
lo que significa que debe tener un campoid
y un campotitle
si o si, no mas campos ni menos.Al intentar agregar el campo
description
el contrato se rompe y esto causa la advertencia que nos arroja TypeScript.