Tslint: As diretrizes de codificação do TypeScript dizem para não prefixar a interface com I

Criado em 30 set. 2017  ·  15Comentários  ·  Fonte: palantir/tslint

Relatório de erro

  • __TSLint version__: 3.15.1
  • __TypeScript version__: 2.5.3
  • __Executando TSLint via__: (escolha um) CLI

Código TypeScript sendo vinculado

// code snippet
interface TypeConfig { }

Comportamento real

O nome da interface [tslint] deve começar com I maiúsculo (nome da interface)

A Microsoft sugere que os nomes de interface não sejam prefixados com I - https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines#names

Question

Comentários muito úteis

Esqueça, eu descobri:

{
  "extends": [
    "tslint:recommended",
    "tslint-react",
    "tslint-config-prettier"
  ],
  "linterOptions": {
    "exclude": [
      "config/**/*.js",
      "node_modules/**/*.ts"
    ]
  },
  "rules": {
    "interface-name" : [true, "never-prefix"]
  }
}

Todos 15 comentários

Observe que essas são as diretrizes para escrever o próprio compilador de texto digitado. Ele não tem o objetivo de ser um guia de estilo para qualquer outro projeto datilografado por aí.
Se você deseja adotar este guia de estilo para seus projetos, basta alterar a configuração da regra em seu tslint.json para "interface-name" : [true, "never"]

50 centavos de um transeunte:
"interface-name" : [true, "never-prefix"] vez de
"interface-name" : [true, "never"]
🙌

regra docs

Tentei desligar o prefixo "I" adicionando nome-da-interface ao tslint.json padrão gerado por Create React App. No entanto, não parece funcionar. Talvez eu esteja colocando no local errado?

{
  "extends": [
    "tslint:recommended",
    "tslint-react",
    "tslint-config-prettier"
  ],
  "linterOptions": {
    "exclude": [
      "config/**/*.js",
      "node_modules/**/*.ts"
    ]
  },
  "interface-name" : [true, "never-prefix"]
}

Esqueça, eu descobri:

{
  "extends": [
    "tslint:recommended",
    "tslint-react",
    "tslint-config-prettier"
  ],
  "linterOptions": {
    "exclude": [
      "config/**/*.js",
      "node_modules/**/*.ts"
    ]
  },
  "rules": {
    "interface-name" : [true, "never-prefix"]
  }
}

Por alguma razão, "interface-name": [true, "never"] não funciona para mim. Mas "interface-name": false funciona bem

@ vasilev-alex "interface-name": [true, "never-prefix"] empasis no prefixo nunca

Ainda estou recebendo "interface name must start with a capitalized I"

este é meu tslint.json:

{
  "rules": {
    "interface-name": [
      true,
      "never-prefix"
    ]
  },
  "extends": [
    "tslint:recommended",
    "tslint-react",
    "tslint-config-prettier"
  ],
  "linterOptions": {
    "exclude": [
      "config/**/*.js",
      "node_modules/**/*.ts",
      "coverage/lcov-report/*.js"
    ]
  }
}

O que estou fazendo de errado?

@ offg777 Nada óbvio. Link para o repo?

A configuração parece correta para mim - você tem certeza de que não há mais nada substituindo-a? A regra está definitivamente funcionando bem para mim

@ offg777

"o nome da interface deve começar com I maiúsculo"

De onde você tirou esse erro? Do seu IDE ou ao executar uma CLI?
E eu não sei sobre as regras exatas em cascata de tslint, mas você tentou colocar o bloco de "regras" abaixo de "estende"?

Excelente

O eslint já suporta isso?

Configuração

"rules": {
    "interface-name": [
      true,
      "never-prefix"
    ]
  },

resulta em
Configuration for rule "interface-name" is invalid

Talvez essa regra exista por um motivo? Cada interface deve ter um nome significativo obviamente diferente de uma classe de implementação?

Esta é uma ideia muito irritante de forçar o resto do mundo a seguir suas preferências _fora de seu próprio projeto_. A obstrução de suas próprias convenções de nomenclatura em ferramentas de programação é um bug da rede neural do desenvolvedor do produto;)

Ainda bem que o TSLint foi descontinuado e esse problema não é mais relevante, então! # 4534

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

ghost picture ghost  ·  3Comentários

jacob-robertson picture jacob-robertson  ·  3Comentários

dashmug picture dashmug  ·  3Comentários

cateyes99 picture cateyes99  ·  3Comentários

SwintDC picture SwintDC  ·  3Comentários