Imaginemos que tenemos una función que retorna un objeto tipo “object”, y más abajo tenemos otro objeto de la misma estructura. Una manera de encapsular estos objetos y hacerlos de un mismo tipo, es crear nuestro propio tipo y asignarlo. Entonces en lugar de devolver “object”, devuelve nuestro Type
// Primero creamos nuestro custom type con el alias de Hero
type HeroId = `${string}-${string}-${string}-${string}-${string}`
type Hero = {
readonly id?: HeroId
// HeroId es un tipo de dato que se basa en una cadena de texto UUID// "esto-es-un-uu-id"name: string,
age: number,
power: number
isActive?: boolean
// con el "?" le indicamos que la propiedad es opcional// al momento de crear un nuevo Hero
}
constnewHero : Hero = {
name: 'Thor',
age: 165,
power: 1900
}
// Este objeto ya no es tipo "object" sino tipo Hero, yo ya no puedo agregar,// ni eliminar propiedades si su padre Hero no las tieneconst generateHero = (hero: Hero) :Hero => {
// generamos un objeto que deberá ser pasado por parámetro y será de tipo Heroconst {name, age, power} = hero
return {id: crypto.randomUUID(), name, age, power}
}
generateHero({name: 'Hulk', age: 287, power: 1600})
// Al llamar la funcion le pasamos todos los parámetros necesario de Hero