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)