Tslint: рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдбрд┐рдВрдЧ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ I рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЙрдкрд╕рд░реНрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 30 рд╕рд┐рддре░ 2017  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: palantir/tslint

рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ

  • __TSLint рд╕рдВрд╕реНрдХрд░рдг__: 3.15.1
  • __рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг__: 2.5.3
  • __TSLint рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ__: (рдПрдХ рдЪреБрдиреЗрдВ) рд╕реАрдПрд▓рдЖрдИ

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдкрдВрдХреНрддрд┐рдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ

// code snippet
interface TypeConfig { }

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░

[tslint] рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдирд╛рдо рдмрдбрд╝реЗ I (рдЗрдВрдЯрд░рдлрд╝реЗрд╕-рдирд╛рдо) рд╕реЗ рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

Microsoft рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╛рдо I рдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рди рдХрд░реЗрдВ -

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ, рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рд╣рд▓ рдирд┐рдХрд╛рд▓ рд▓рд┐рдпрд╛:

{
  "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"]
рдореИрдВ

рдирд┐рдпрдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝

рдореИрдВрдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ tslint.json рдЗрдВрдЯрд░рдлрд╝реЗрд╕-рдирд╛рдо рдЬреЛрдбрд╝рдХрд░ "I" рдЙрдкрд╕рд░реНрдЧ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬреЛ рдХрд┐ Create React App рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рд╢рд╛рдпрдж рдореИрдВ рдЗрд╕реЗ рдЧрд▓рдд рд╕реНрдерд╛рди рдкрд░ рд░рдЦ рд░рд╣рд╛ рд╣реВрдБ?

{
  "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"] рдХрднреА рдирд╣реАрдВ рдкрд░ рдЬреЛрд░- рдЙрдкрд╕рд░реНрдЧ

рдореБрдЭреЗ рдЕрднреА рднреА "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": {
    "interface-name": [
      true,
      "never-prefix"
    ]
  },

рдХрд╛ рдкрд░рд┐рдгрд╛рдо
Configuration for rule "interface-name" is invalid

рд╢рд╛рдпрдж рдпрд╣ рдирд┐рдпрдо рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореМрдЬреВрдж рд╣реИ? рдХреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдПрдХ рд╕рд╛рд░реНрдердХ рдирд╛рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд░реНрдЧ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдЕрдиреБрд╕рд╛рд░ _рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд╣рд░_ рджреБрдирд┐рдпрд╛ рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдЦреВрдиреА рдХрд╖реНрдЯрдкреНрд░рдж рд╡рд┐рдЪрд╛рд░ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЯреВрд▓реНрд╕ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдЙрддреНрдкрд╛рдж рдбреЗрд╡рд▓рдкрд░ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдПрдХ рдмрдЧ рд╣реИ;)

рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ TSLint рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдореБрджреНрджрд╛ рдЕрдм рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ! #4534

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

dashmug picture dashmug  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

avanderhoorn picture avanderhoorn  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

CSchulz picture CSchulz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghost picture ghost  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

DanielKucal picture DanielKucal  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ