Tslint: Les directives de codage TypeScript disent de ne pas préfixer l'interface avec I

Créé le 30 sept. 2017  ·  15Commentaires  ·  Source: palantir/tslint

Rapport d'erreur

  • __TSLint version__ : 3.15.1
  • __TypeScript version__ : 2.5.3
  • __Exécution de TSLint via__ : (choisissez-en une) CLI

Code TypeScript en train d'être lint

// code snippet
interface TypeConfig { }

Comportement réel

[tslint] le nom de l'interface doit commencer par un I majuscule (nom-interface)

Microsoft suggère que les noms d'interface ne soient pas préfixés par un I - https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines#names

Question

Commentaire le plus utile

C'est pas grave, j'ai compris :

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

Tous les 15 commentaires

Notez que ce sont les directives pour l'écriture du compilateur dactylographié lui-même. Il ne s'agit pas d'un guide de style pour tout autre projet dactylographié.
Si vous souhaitez adopter ce guide de style pour vos projets, vous pouvez simplement changer la configuration de la règle dans votre tslint.json en "interface-name" : [true, "never"]

50 centimes d'un passant :
"interface-name" : [true, "never-prefix"] au lieu de
"interface-name" : [true, "never"]
??

documents de règle

J'ai essayé de désactiver le préfixe "I" en ajoutant le nom de l'interface au tslint.json par défaut généré par Create React App. Cependant, cela ne semble pas fonctionner. Peut-être que je le mets au mauvais endroit ?

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

C'est pas grave, j'ai compris :

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

Pour une raison quelconque, "interface-name": [true, "never"] ne fonctionne pas pour moi. Mais "interface-name": false fonctionne bien

@vasilev-alex "interface-name": [true, "never-prefix"] empasi sur jamais- préfixe

Je reçois toujours "interface name must start with a capitalized I"

voici mon 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"
    ]
  }
}

Qu'est-ce que je fais mal?

@offg777 Rien d'évident. Lien vers le dépôt ?

La configuration me semble correcte - êtes-vous sûr que rien d'autre ne la remplace ? La règle fonctionne vraiment correctement pour moi

@offg777

"le nom de l'interface doit commencer par un I majuscule"

D'où tenez-vous cette erreur ? Depuis votre IDE ou lors de l'exécution d'une CLI ?
Et je ne connais pas les règles de cascade exactes de tslint, mais avez-vous essayé de mettre le bloc "règles" sous "extends" ?

Super

Est-ce que eslint prend déjà en charge cela?

Réglage

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

résulte en
Configuration for rule "interface-name" is invalid

Peut-être que cette règle existe pour une raison ? Chaque interface doit-elle avoir un nom significatif, évidemment différent d'une classe d'implémentation ?

C'est une idée agaçante de forcer le reste du monde à suivre vos préférences _en dehors de votre propre projet_. L'intrusion de vos propres conventions de nommage dans les outils de programmation est un bogue du réseau de neurones des développeurs de produits ;)

Heureusement que TSLint est obsolète et que ce problème n'est plus d'actualité, alors ! #4534

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

ypresto picture ypresto  ·  3Commentaires

denkomanceski picture denkomanceski  ·  3Commentaires

Ne-Ne picture Ne-Ne  ·  3Commentaires

DanielKucal picture DanielKucal  ·  3Commentaires

avanderhoorn picture avanderhoorn  ·  3Commentaires