typescript-tipos-de-datos-personalizados

Tipos de datos personalizados en TypeScript

En TypeScript los tipos definidos por el usuario (o personalizados), nos permiten crear nuevos tipos a partir de la composición de otros tipos.

Estos tipos pueden representar estructuras de datos complejas, uniones de tipos múltiples, o incluso comportamientos.

typescript-objetos-primitivos

Tipos de datos personalizados

Tipos de datos literales

Los tipos de datos literales permiten definir un conjunto de valores específicos que una variable puede tomar. Por ejemplo:

let direction: "up" | "down" | "left" | "right";
direction = "up";

Tipos de datos enum

El tipo de datos enum permite definir un conjunto de constantes con nombres más descriptivos. Por ejemplo:

enum Direction {
  Up = 1,
  Down,
  Left,
  Right
}
let userDirection: Direction = Direction.Up;

Tipos de datos tuplas

Las tuplas son una forma de definir un array con un número fijo de elementos con tipos de datos específicos. Por ejemplo:

let employee: [string, number];
employee = ["John Doe", 35];

Tipos programación orientada a objetos

Tipos de datos clases

Las clases son una forma de definir objetos con métodos y propiedades. Permiten crear instancias de objetos y heredar propiedades y métodos de otras clases. Por ejemplo:

class Animal {
  name: string;
  constructor(name: string) {
    this.name = name;
  }
  makeSound() {
    console.log("Animal is making a sound");
  }
}

Tipos de datos interfaces

Las interfaces son una forma de definir la estructura de un objeto en Typescript. Pueden contener propiedades, métodos y eventos. Por ejemplo:

interface Person {
  name: string;
  age: number;
  greet(): void;
}

Tipos compuestos

Tipos de datos union

El tipo de datos union permite definir una variable que puede aceptar varios tipos de datos diferentes. Por ejemplo:

let age: number | string;
age = 25;
age = "25";

Tipos de datos intersección

El tipo de datos intersección permite combinar dos o más tipos de datos en uno solo. Por ejemplo:

type Admin = {
  name: string;
  isAdmin: boolean;
}

type Employee = {
  name: string;
  salary: number;
}

type AdminEmployee = Admin & Employee;