Pular para o conteúdo principal

omit_obvious_local_variable_types

Saiba mais sobre a regra de lint omit_obvious_local_variable_types.

Estável
Correção disponível
Lançado no Dart 3.6

Omita anotações de tipo óbvias para variáveis locais.

Detalhes

#

Não anote o tipo de variáveis locais inicializadas quando o tipo for óbvio.

Variáveis locais, especialmente em código moderno, em que as funções tendem a ser pequenas, têm escopo muito restrito. Omitir o tipo direciona a atenção do leitor para o nome da variável, que é mais importante, e para o seu valor inicial. Por isso, anotações de tipo em variáveis locais que sejam óbvias devem ser omitidas.

RUIM:

dart
List<List<Ingredient>> possibleDesserts(Set<Ingredient> pantry) {
  List<List<Ingredient>> desserts = <List<Ingredient>>[];
  for (final List<Ingredient> recipe in cookbook) {
    if (pantry.containsAll(recipe)) {
      desserts.add(recipe);
    }
  }
​
  return desserts;
}
​
const cookbook = <List<Ingredient>>[....];

BOM:

dart
List<List<Ingredient>> possibleDesserts(Set<Ingredient> pantry) {
  var desserts = <List<Ingredient>>[];
  for (final List<Ingredient> recipe in cookbook) {
    if (pantry.containsAll(recipe)) {
      desserts.add(recipe);
    }
  }
​
  return desserts;
}
​
const cookbook = <List<Ingredient>>[....];

Às vezes, o tipo inferido não é o tipo que você quer que a variável tenha. Por exemplo, você pode pretender atribuir valores de outros tipos depois. Você também pode querer escrever uma anotação de tipo explicitamente, porque o tipo da expressão de inicialização não é óbvio e será útil para leitores futuros do código documentar esse tipo. Ou você pode querer se comprometer com um tipo específico, para que atualizações futuras de dependências (no código próximo, nos imports, em qualquer lugar) não alterem silenciosamente o tipo dessa variável, introduzindo erros de compilação ou bugs em tempo de execução nos locais onde ela é usada. Nesses casos, anote a variável com o tipo que você deseja.

BOM:

dart
Widget build(BuildContext context) {
  Widget result = someGenericFunction(42) ?? Text('You won!');
  if (applyPadding) {
    result = Padding(padding: EdgeInsets.all(8.0), child: result);
  }
  return result;
}

Regras incompatíveis

#

O lint omit_obvious_local_variable_types é incompatível com as seguintes regras:

Ativar

#

Para ativar a regra omit_obvious_local_variable_types, adicione omit_obvious_local_variable_types em linter > rules no seu arquivo analysis_options.yaml:

analysis_options.yaml
yaml
linter:
  rules:
    - omit_obvious_local_variable_types

Se você usa a sintaxe de mapa YAML para configurar as regras de lint, adicione omit_obvious_local_variable_types: true em linter > rules:

analysis_options.yaml
yaml
linter:
  rules:
    omit_obvious_local_variable_types: true

Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.