JavaScript

Type 'string' is not assignable to type — como corrigir

Type string is not assignable to type: descubra como priorizar ações certas, manter consistência e obter avanço real no curto prazo.

Marcos Costa
Marcos Costa
28 de abril de 2026 8 min de leitura
Type 'string' is not assignable to type — como corrigir

Type ‘string’ is not assignable to type — como corrigir

A mensagem de erro “Type ‘string’ is not assignable to type” é um dos desafios mais comuns enfrentados por desenvolvedores que trabalham com TypeScript. Essa ocorrência significa que você está tentando atribuir um valor do tipo string a uma variável ou propriedade que espera um tipo de dado diferente. Entender a raiz desse problema e as soluções adequadas é crucial para manter a robustez e a segurança do seu código. Neste tutorial, vamos explorar as causas e as estratégias para resolver esse erro de forma eficaz, permitindo que você continue seu desenvolvimento com mais confiança e menos interrupções.

Preparação: Entendendo a Origem do Erro

Antes de mergulhar nas soluções, é importante identificar por que o TypeScript está sinalizando que “Type ‘string’ is not assignable to type”. Geralmente, isso acontece por algumas razões:

  • Declaração de Tipo Explícita: Você declarou explicitamente um tipo diferente de string para uma variável, e depois tentou atribuir uma string a ela.
  • Inferência de Tipo: O TypeScript inferiu um tipo diferente de string com base na primeira atribuição de valor, e uma atribuição subsequente de uma string quebra essa inferência.
  • Interfaces e Tipos Personalizados: Um objeto tem uma propriedade definida com um tipo específico (não string), e você tenta atribuir uma string a essa propriedade.
  • Retorno de Função: Uma função é tipada para retornar algo diferente de uma string, mas seu corpo retorna uma string.

Verifique o contexto da sua declaração de variável ou propriedade. Isso pode poupar tempo ao identificar a solução correta. Para mais insights sobre as bases do desenvolvimento, confira nosso blog.

Passo a Passo: Soluções para “Type string is not assignable to type”

Aqui estão as abordagens mais eficazes para resolver o problema “Type string is not assignable to type” em seu código TypeScript.

1. Correção Direta: Usando Asserção de Tipo

A asserção de tipo informa ao compilador que você sabe mais sobre o tipo de um valor do que ele pode inferir. Use com cautela, pois isso desabilita a verificação de tipo em tempo de compilação para aquela instrução específica, podendo introduzir bugs em tempo de execução se a asserção for incorreta.

Exemplo de Asserção de Tipo:

interface MinhaInterface {
    id: number;
}

let meuObjeto: MinhaInterface;

// Isso causaria "Type 'string' is not assignable to type 'number'" se tentasse atribuir diretamente
// meuObjeto.id = "123";

// Para uma situação onde uma string está vindo de algum lugar e você precisa tratá-la como número
let valorString = "123";
// Assumindo que você sabe que valorString será um número válido
meuObjeto = {
    id: Number(valorString) as number // Asserção de tipo após a conversão
};

console.log(meuObjeto.id); // Saída: 123

Checkpoint: A asserção resolveu o erro, mas você tem certeza de que o valor é realmente do tipo esperado em tempo de execução?

2. Proteção Robusta: Implementando Type Guards para evitar ‘Type string is not assignable to type’

Type Guards são expressões que realizam verificações em tempo de execução para garantir que um valor é de um determinado tipo. Eles são ideais para lidar com tipos union e cenários onde o tipo pode variar. Esta é uma forma segura e recomendada de lidar com a atribuição de tipos dinâmicos.

function isNumber(value: any): value is number {
    return typeof value === 'number';
}

function processaValor(input: string | number) {
    if (isNumber(input)) {
        console.log(`O valor é um número: ${input * 2}`);
    } else {
        // Aqui, input é automaticamente inferido como 'string'
        console.log(`O valor é uma string: ${input.toUpperCase()}`);
    }
}

processaValor("olá mundo"); // Saída: O valor é uma string: OLÁ MUNDO
processaValor(123);        // Saída: O valor é um número: 246

Checkpoint: O Type Guard valida o tipo antes de usá-lo, prevenindo o erro “Type string is not assignable to type” e garantindo segurança?

3. Definindo Tipos e Interfaces Corretamente

A causa mais comum para “Type string is not assignable to type” é uma definição de tipo ou interface que não corresponde ao uso real. Revise suas interfaces e tipos para garantir que as propriedades esperam os tipos de dados corretos.

// Interface correta
interface Usuario {
    nome: string;
    idade: number;
    email: string;
}

let novoUsuario: Usuario = {
    nome: "Ana Silva",
    idade: 30,
    email: "ana.silva@exemplo.com"
};

// Exemplo de erro que seria evitado com a tipagem correta
// novoUsuario.idade = "trinta"; // Erro: Type 'string' is not assignable to type 'number'

Checkpoint: Suas interfaces e tipos refletem com precisão a estrutura e os tipos de dados dos seus objetos?

4. Conversão Explícita de Tipos

Se você tem uma string que precisa ser tratada como outro tipo (como um número ou um booleano), use as funções de conversão nativas do JavaScript.

let idString: string = "456";
let idNumber: number = parseInt(idString, 10); // Converte string para número
console.log(idNumber); // Saída: 456

let isAtivoString: string = "true";
let isAtivoBoolean: boolean = Boolean(isAtivoString === "true"); // Converte string para booleano
console.log(isAtivoBoolean); // Saída: true

Checkpoint: A conversão de tipo foi aplicada corretamente, e o novo valor é do tipo desejado?

Para aprofundar seu conhecimento sobre o sistema de tipos do TypeScript, consulte a documentação oficial do TypeScript.

Erros Comuns ao Lidar com “Type string is not assignable to type”

Ao tentar corrigir o erro “Type string is not assignable to type”, alguns equívocos são frequentes e podem levar a problemas maiores:

  • Abusar de any: Usar o tipo any indiscriminadamente desabilita a verificação de tipo, negando os benefícios do TypeScript e tornando o código mais propenso a erros em tempo de execução.
  • Asserções Incorretas: Fazer uma asserção de tipo (as SomeType) sem ter certeza de que o valor realmente será desse tipo pode levar a erros difíceis de depurar em tempo de execução.
  • Ignorar a Causa Raiz: Simplesmente converter tipos sem entender por que o erro “Type string is not assignable to type” ocorreu inicialmente pode mascarar um problema de design ou de dados.
  • Falta de Validação: Ao converter strings em números, esquecer de validar se a string é de fato um número válido pode resultar em NaN (Not a Number) e outros comportamentos inesperados.

Comparativo de Abordagens para “Type string is not assignable to type”

Entender quando usar cada técnica é crucial para manter a clareza e a robustez do seu código.

AbordagemQuando UsarVantagensDesvantagens
Asserção de Tipo (as)Quando o desenvolvedor tem certeza absoluta do tipo em tempo de execução, mas o compilador não consegue inferir.Simples, direto.Ignora a verificação de tipo do compilador; pode introduzir bugs se incorreto.
Type Guards (typeof, instanceof, funções personalizadas)Para lidar com tipos union ou quando o tipo é determinado dinamicamente em tempo de execução.Seguro, mantém a verificação de tipo, legível.Mais verboso que asserção; requer lógica condicional.
Definição de Tipos/InterfacesNa fase de design, para modelar dados com precisão.Previne erros na origem, melhora a legibilidade e manutenção.Requer planejamento cuidadoso; pode ser rígido se o design mudar.
Conversão Explícita (Number(), Boolean(), parseInt())Quando se sabe que um valor pode ser transformado em outro tipo compatível.Claro, utiliza funções JS nativas.Não trata a validação da entrada por si só (ex: “abc” para Number() resulta em NaN).

Checklist Final

Antes de considerar o erro “Type string is not assignable to type” resolvido, siga este checklist:

  1. Verifique a Definição Original: Onde a variável ou propriedade foi definida pela primeira vez? O tipo esperado está correto ali?
  2. Rastreie a Atribuição: De onde vem o valor que está sendo atribuído? Ele é realmente uma string quando não deveria ser?
  3. Use Type Guards: Se houver múltiplos tipos possíveis (um union type), você implementou Type Guards para lidar com cada caso de forma segura?
  4. Aplique Conversão Explícita: Se a intenção é converter a string para outro tipo, a conversão está sendo feita de forma explícita e com validação?
  5. Evite any: Você evitou usar any como uma solução rápida? Lembre-se, any remove a segurança de tipos.
  6. Testes: Você adicionou ou atualizou testes para garantir que a correção funcione como esperado e não introduza regressões?

Perguntas frequentes

O que significa “Type ‘string’ is not assignable to type”?

Significa que você está tentando colocar um valor de texto (uma string) em um local no seu código TypeScript que espera um tipo de dado diferente, como um número, um booleano ou um tipo de objeto específico. O TypeScript impede isso para garantir a integridade e a previsibilidade do seu código.

Quando devo usar asserção de tipo (as) versus um Type Guard?

Use a asserção de tipo (as) quando você, o desenvolvedor, tem certeza absoluta do tipo de um valor em um determinado ponto, mas o TypeScript não consegue inferir. Use um Type Guard quando o tipo de um valor pode variar (por exemplo, em um union type) e você precisa verificar o tipo em tempo de execução para executar lógica específica para cada tipo.

É possível desativar a verificação de tipo para strings em TypeScript?

Não diretamente para strings especificamente, mas você pode usar o tipo any para desativar a verificação de tipo para uma variável ou expressão. No entanto, isso é geralmente desaconselhado, pois anula o propósito do TypeScript de fornecer segurança de tipo e pode levar a erros em tempo de execução que seriam capturados pelo compilador.

Conclusão

Dominar a correção do erro “Type string is not assignable to type” é um passo fundamental para qualquer desenvolvedor TypeScript. Ao compreender as causas subjacentes e aplicar as estratégias corretas — seja através de asserções de tipo, Type Guards, definições de interface precisas ou conversões explícitas — você garante que seu código permaneça robusto, legível e livre de erros. Lembre-se de que a segurança de tipos é a base para aplicações escaláveis e de fácil manutenção.

Continue explorando e aprimorando suas habilidades em TypeScript. Para mais conteúdo aprofundado e soluções para desafios de programação, visite nossa categoria sobre correção de tipos em nosso blog.

Marcos Costa

Sobre Marcos Costa

Desenvolvedor backend com foco em arquitetura de software, automação e produtos digitais.

Ver mais artigos