Explica este código TypeScript
Dificultad: Básico
type Empleado = {id:number; nombre: string; area:"Ventas" | "RH" | "Finanzas"};
type Admin = {id:number; nombre: string; empleados:Empleado[]};
type Staff = Empleado | Admin;
const logPerson = (staff: Staff) =>{
if("area" in staff){
console.log(`El empleado ${staff.nombre} trabaja en ${staff.area}`)
}else {
console.log(`El admin ${staff.nombre} tiene ${staff.empleados.length} empleados a su cargo`)
}
}
const pedro:Empleado = {
id: 1,
nombre: "pedro",
area:"Ventas",
}
const carlos:Empleado = {
id:2,
nombre:"carlos",
area: "RH",
}
const felipe:Admin = {
id:1,
nombre:"felipe",
empleados: [pedro, carlos],
}
logPerson(felipe)
- A.
SyntaxError - B.
"El admin felipe tiene 2 empleados a su cargo" - C.
TypeError - D.
undefined
✅ B. En TypeScript tenemos la característica de usar Notar que el narrowing en este ejemplo es imoportante para diferenciar cuando estamos tratanto con un Respuesta
"El admin felipe tiene 2 empleados a su cargo"type para declarar tipos de manera mas usable y reutilizable, incluso fusionar conceptos y usar estos tipos como uniones.Empleado y cuando con un Admin, esto no lo podemos hacer usando el operador typeof como en otros ejemplos puesto que ni Empleado ni Admin son tipos de datos validos de JavaScript, por este motivo verificamos una llave en especifico para cada caso: si tiene la key area se trata de un Empleado y sino se trata de un Admin.
Top comments (0)