Typescript

Tips y tricks de Typescript

Stiven Castillo
2 min readMay 07, 2022

Elegir algunas propiedades con Pick

Typescript es muy poderoso en términos de comprobación de tipos, pero a veces se vuelve tedioso cuando algunos tipos son subconjuntos de otros tipos y necesitas definir la comprobación de tipos para ellos.

Tomemos un ejemplo, tenemps 2 tipos de respuesta:

interface UserResponse {
  id: number;
  name: string;
  email: string;
  phone: string;
  age: number;
}
interface SignInResponse {
  id: number;
  name: string;
  token: string;
}

En lugar de definir tipos del mismo contexto SignInResponse y UserResponse, podemos definir el tipo para UserResponse y elegir algunas propiedades para SignInResponse.

interface SignInResponse extends Pick<UserResponse, "id" | "name"> {
  token: string;
};

Uppercase / Lowercase

type Role = "admin" | "user" | "guest";
type UppercaseRole = Uppercase<Role>; // "ADMIN" | "USER" | "GUEST"

type Role = "ADMIN" | "USER" | "GUEST";
type LowercaseRole = Lowercase<Role>; // "admin" | "user" | "guest"

Lo mismo sería con Capitalize y Uncapitalize

Propiedades opcionales con Partial

Construye un tipo con todas las propiedades de Type establecidas como opcionales.

interface Product {
  name: string;
  price: number;
  units: number;
}

type PartialProduct = Partial<Product>;

Para el efecto contrario se usa Required<Product>

Record

interface User {
  id: number;
  name: string;
  lastName: string
}
interface Book {
  createdBy: User;
  updatedBy: User;
}
// Alternativa
type BookRecord = Record<"createdBy" | "updatedBy", User>;