?: / readonly Propriedades opcionais e readonly
Última atualização: 2026-10-22
?: / readonly Propriedades opcionais e readonly
? marca uma propriedade como opcional (pode estar ausente); readonly a marca como somente leitura (não pode ser reatribuída). Os dois modificadores mais comuns em propriedades de objetos.
| Grupo | Composição de Tipos |
|---|---|
| Tipo | Sintaxe |
| Modo strict | Não necessário |
ℹ️ Info O editor transpila TypeScript para JavaScript e o executa (sem verificação de tipos); veja a Saída de cada exemplo para o resultado da verificação.
📝 Sintaxe
interface Config {
readonly name: string; // somente leitura: não pode ser reatribuído
retries?: number; // opcional: pode estar ausente
}
⚙️ Parâmetros
| ?: | Marcador opcional: a propriedade pode ser omitida em literais de objeto |
|---|---|
| readonly | Marcador readonly: reatribuição após a inicialização é um erro de compilação (apenas no primeiro nível) |
Retorno:Nenhum valor de retorno — ambos os modificadores existem apenas na camada de tipos e desaparecem após a compilação.
▶ Exemplo
Edite o código abaixo e clique em Testar para ver o resultado transpilado:
Saída:
shop localhost 8080
(Saída de execução após a transpilação; escrever config.appName = "x" é um erro de compilação — appName é readonly)
💡 Observações
ℹ️ Info Propriedades opcionais incluem undefined em seu tipo: retries?: number é retries?: number | undefined sob strict.
⚠️ Atenção readonly bloqueia apenas a reatribuição: readonly arr: number[] ainda permite push, e campos aninhados continuam mutáveis. Para imutabilidade profunda, use Readonly<T> ou as const.
💡 Dica Leia propriedades opcionais com padrões via ?? (config.port ?? 8080) em vez de espalhar verificações de undefined.
🏷️ Composição de Tipos Relacionada
💡 Casos relacionados
Mais casos em breve.
📚 Tutoriais relacionados
❓ Perguntas frequentes
P readonly vs const?
R const protege o vínculo da variável (sem reponto); readonly protege a propriedade (sem reatribuição). Campos de um objeto const continuam mutáveis a menos que marcados com readonly.
P Propriedade opcional vs T | undefined — há diferença?
R Sim: ? permite que a propriedade esteja inteiramente ausente; a?: T | undefined exige presença mas admite undefined. exactOptionalPropertyTypes impõe essa distinção.
P Como tornar um objeto inteiro (profundamente) readonly?
R Readonly<T> é superficial; use as const (trava nos literais) ou um tipo recursivo DeepReadonly para profundidade.