Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Atributos "readonly" ??

Desculpe, ... mas ou não ouvi mencionar esta palavra, ou não foi mencionado. O que é o readonly ? Para que serve e qual é a sua finalidade no JavaScript ?

1 resposta
solução!

O atributo readonly é um modificador de acesso que indica que aquele campo é somente leitura, ou seja, só pode ser lido, mas não pode ser sobrescrito.

Readonly no JS

Cada linguagem pode implementar essa funcionalidade de uma maneira. No JavaScript, no momento, até onde sei, ainda não é um atributo nativo.

Então, caso queira ou precise fazer algo nesse sentido, precisará criar meios para permitir algo semelhante. O exemplo abaixo, adaptado e extraído deste link, pode ser entendido como um meio de usar o atributo readonly em classes JS:

class MyReadOnly {
  static get readonly() {
    return "propriedade somente leitura";
  }

  static set readonly(value) {
    throw new Error(`esta propriedade é somente leitura e não pode ser escrita pelo valor "${value}"`);
  }

}

Entradas / Saídas:

MyReadOnly.readonly;
// "propriedade somente leitura"

MyReadOnly.readonly = "escreva isso..."
// Uncaught Error: esta propriedade é somente leitura e não pode ser escrita pelo valor "escreva isso..."

MyReadOnly.readonly;
// "propriedade somente leitura"

Uma outra opção

Você também pode optar por usar readonly no JS usando o TypeScript:

class Pessoa {
    readonly firstName: string = "Marcia";
}

A formação de TS da Alura é muito boa! <3

Links para conhecer e saber mais:
  1. Gist - Read only property ES6
  2. MDN Docs - getter
  3. Qual a diferença entre atributo e campo, nas classes?
  4. Documentação - Readonly<Type>
  5. Formação TypeScript Alura