Tslint: TypeScript-Codierungsrichtlinien besagen, der Schnittstelle kein I . voranzustellen

Erstellt am 30. Sept. 2017  ·  15Kommentare  ·  Quelle: palantir/tslint

Fehlerbericht

  • __TSLint-Version__: 3.15.1
  • __TypeScript-Version__: 2.5.3
  • __TSLint ausführen über__: (wählen Sie eine aus) CLI

TypeScript-Code wird linted

// code snippet
interface TypeConfig { }

Tatsächliches Verhalten

[tslint] Schnittstellenname muss mit einem großen I beginnen (Schnittstellenname)

Microsoft schlägt vor, Schnittstellennamen nicht mit einem I voranzustellen -

Question

Hilfreichster Kommentar

Egal, ich habe es herausgefunden:

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

Alle 15 Kommentare

Beachten Sie, dass dies die Richtlinien für das Schreiben des Typoskript-Compilers selbst sind. Es ist nicht als Styleguide für andere Typoskript-Projekte gedacht.
Wenn Sie diesen Styleguide für Ihre Projekte übernehmen möchten, ändern Sie einfach die Konfiguration der Regel in Ihrer tslint.json in "interface-name" : [true, "never"]

50 Cent von einem Passanten:
"interface-name" : [true, "never-prefix"] statt
"interface-name" : [true, "never"]
🙌

Regeldokumente

Ich habe versucht, das Präfix "I" zu deaktivieren, indem ich dem Standardwert tslint.json , der von Create React App generiert wird, den Schnittstellennamen hinzugefügt habe. Es scheint jedoch nicht zu funktionieren. Vielleicht setze ich es an der falschen Stelle ein?

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

Egal, ich habe es herausgefunden:

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

Aus irgendeinem Grund funktioniert "interface-name": [true, "never"] bei mir nicht. Aber "interface-name": false funktioniert gut

@vasilev-alex "interface-name": [true, "never-prefix"] Betonung auf Nie- Präfix

Ich bekomme immer noch "interface name must start with a capitalized I"

das ist meine 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"
    ]
  }
}

Was mache ich falsch?

@offg777 Nichts Offensichtliches. Link zum Repository?

Die Konfiguration sieht für mich richtig aus - sind Sie sicher, dass sie nichts anderes überschreibt? Bei mir funktioniert die Regel auf jeden Fall richtig

@offg777

"Schnittstellenname muss mit einem großen I beginnen"

Woher kommt dieser Fehler? Von Ihrer IDE oder beim Ausführen einer CLI?
Und ich kenne die genauen Kaskadierungsregeln von Tslint nicht, aber haben Sie versucht, den Block "Regeln" unter "Erweitert" zu setzen?

Groß

Unterstützt eslint das schon?

Einstellung

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

ergibt sich
Configuration for rule "interface-name" is invalid

Gibt es diese Regel vielleicht aus einem bestimmten Grund? Sollte jede Schnittstelle einen aussagekräftigen Namen haben, der sich offensichtlich von einer implementierenden Klasse unterscheidet?

Das ist eine verdammt nervige Idee, den Rest der Welt zu zwingen, Ihren Vorlieben _außerhalb Ihres eigenen Projekts_ zu folgen. Das Aufbrechen eigener Namenskonventionen in Programmiertools ist ein Fehler des neuronalen Netzes der Produktentwickler ;)

Gut, dass TSLint veraltet ist und dieses Problem dann nicht mehr relevant ist! #4534

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen