Tslint: Π’ рСкомСндациях ΠΏΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ TypeScript говорится, Ρ‡Ρ‚ΠΎ интСрфСйс Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ прСфикса I

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 30 сСнт. 2017  Β·  15ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: palantir/tslint

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС

  • __TSLint вСрсия__: 3.15.1
  • __TypeScript version__: 2.5.3
  • __ Запуск TSLint Ρ‡Π΅Ρ€Π΅Π· __: (Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΎΠ΄ΠΈΠ½) CLI

Π›ΠΈΠ½Ρ‚ΠΈΠ½Π³ ΠΊΠΎΠ΄Π° TypeScript

// code snippet
interface TypeConfig { }

ЀактичСскоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

[tslint] имя интСрфСйса Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹ I (имя-интСрфСйса).

Microsoft ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π° интСрфСйсов Π±Π΅Π· прСфикса I - https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines#names

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π”Π° Π»Π°Π΄Π½ΠΎ, я понял это:

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

ВсС 15 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ написанию самого компилятора машинописного тСкста. Он Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для использования Π² качСствС руководства ΠΏΠΎ ΡΡ‚ΠΈΠ»ΡŽ для любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° машинописного тСкста.
Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ это руководство ΠΏΠΎ ΡΡ‚ΠΈΠ»ΡŽ для своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π² вашСм tslint.json Π½Π° "interface-name" : [true, "never"]

50 Ρ†Π΅Π½Ρ‚ΠΎΠ² ΠΎΡ‚ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΅Π³ΠΎ:
"interface-name" : [true, "never-prefix"] вмСсто
"interface-name" : [true, "never"]
πŸ™Œ

Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»

Π― попытался ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ прСфикс Β«IΒ», Π΄ΠΎΠ±Π°Π²ΠΈΠ² имя интСрфСйса ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ tslint.json ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ создаСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Create React. Однако, ΠΏΠΎΡ…ΠΎΠΆΠ΅, это Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ΠœΠΎΠΆΠ΅Ρ‚ я Π½Π΅ Ρ‚ΡƒΠ΄Π° ΠΊΠ»Π°Π΄Ρƒ?

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

Π”Π° Π»Π°Π΄Π½ΠΎ, я понял это:

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

Π£ мСня ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ "interface-name": [true, "never"] Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Но "interface-name": false ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

@ vasilev-alex "interface-name": [true, "never-prefix"] empasis Π½Π° прСфиксС never-

Π― всС Π΅Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ "interface name must start with a capitalized I"

это ΠΌΠΎΠΉ 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"
    ]
  }
}

Π§Ρ‚ΠΎ я дСлаю Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ?

@ offg777 НичСго ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ³ΠΎ. Бсылка Π½Π° Ρ€Π΅ΠΏΠΎ?

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΌΠ½Π΅ каТСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ - Π²Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Π΅Π΅ Π½ΠΈΡ‡Ρ‚ΠΎ Π½Π΅ отмСняСт? ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для мСня ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ

@ offg777

"имя интСрфСйса Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹ I"

ΠžΡ‚ΠΊΡƒΠ΄Π° Ρƒ вас эта ошибка? Из вашСй IDE ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ запускС CLI?
И я Π½Π΅ знаю Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ» каскадирования tslint, Π½ΠΎ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ Π»ΠΈ Π²Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊ Β«rulesΒ» ΠΏΠΎΠ΄ Β«extendsΒ»?

Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ

Eslint ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ это?

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€

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

ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ
Configuration for rule "interface-name" is invalid

ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ сущСствуСт нСспроста? Π”ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ интСрфСйс ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΠ΅ имя, явно ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ класса?

Π­Ρ‚ΠΎ чСртовски нСприятная идСя Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠΈΡ€ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ вашим прСдпочтСниям _ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ вашСго собствСнного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°_. НавязываниС Π²Π°ΡˆΠΈΡ… собствСнных соглашСний ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ… Π² инструмСнтах программирования - это ошибка Π½Π΅ΠΉΡ€ΠΎΠ½Π½ΠΎΠΉ сСти Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°;)

Π₯ΠΎΡ€ΠΎΡˆΠΎ, Ρ‡Ρ‚ΠΎ TSLint устарСл, ΠΈ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° большС Π½Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°! # 4534

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ