TypeScript e a palavra chave readonly

2021-04-05

Imutabilidade é muito usado no mundo funcional de JavaScript e TypeScript, você sabia que pode usar a palavra-chave readonly na definição de tipos?

Veja o exemplo abaixo:

/code/tuple.ts
export type Tuple<A, B> = readonly [A, B]

Indicando que o array é imutável (ou oferece apenas acesso de leitura) pode previnir alguns bugs bem chatos envolvendo a mutabilidade de objetos. Veja só quando tento alterar a posição zero da tupla:

/code/tuple.ts
export type Tuple<A, B> = readonly [A, B]

const t: Tuple<string, number> = ['ok', 2]
t[0] = 'not ok'
// Error: Cannot assign to '0' because it is a read-only property.

Lembre-se de que também é possível usar essa palavra chave dentro de objetos e interfaces:

type Product = {
  readonly productId: number;
  readonly price: number;
}

Se você quiser anotar como somente leitura, todas as propriedades de um objeto que é representado por um tipo ou interface, você pode usar o tipo Readonly, veja o exemplo:

type Order = Readonly<{
  orderId: number;
  price: number;
}>
• • •
#typescript

📝 Edite esta página