Tslint: Pedoman pengkodean TypeScript mengatakan untuk tidak mengawali antarmuka dengan I

Dibuat pada 30 Sep 2017  ·  15Komentar  ·  Sumber: palantir/tslint

Laporan Bug

  • __TSLint versi__: 3.15.1
  • __TypeScript versi__: 2.5.3
  • __Menjalankan TSLint melalui__: (pilih salah satu) CLI

Kode TypeScript sedang dilinting

// code snippet
interface TypeConfig { }

Perilaku sebenarnya

Nama antarmuka [tslint] harus dimulai dengan huruf I (nama antarmuka)

Microsoft menyarankan nama antarmuka untuk tidak diawali dengan I - https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines#names

Question

Komentar yang paling membantu

Tidak apa-apa, saya menemukan jawabannya:

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

Semua 15 komentar

Perhatikan bahwa ini adalah panduan untuk menulis compiler TypeScript itu sendiri. Ini tidak dimaksudkan untuk menjadi panduan gaya untuk proyek TypeScript lainnya di luar sana.
Jika Anda ingin mengadopsi panduan gaya ini untuk proyek Anda, Anda bisa mengubah konfigurasi aturan di tslint.json Anda menjadi "interface-name" : [true, "never"]

50 sen dari orang yang lewat:
"interface-name" : [true, "never-prefix"] bukannya
"interface-name" : [true, "never"]
🙌

aturan dokumen

Saya mencoba mematikan awalan "I" dengan menambahkan nama antarmuka ke default tslint.json yang dihasilkan oleh Create React App. Namun, sepertinya tidak berhasil. Mungkin saya meletakkannya di lokasi yang salah?

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

Tidak apa-apa, saya menemukan jawabannya:

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

Untuk beberapa alasan "interface-name": [true, "never"] tidak bekerja untuk saya. Tapi "interface-name": false berfungsi dengan baik

@vasilev-alex "interface-name": [true, "never-prefix"] penekanan pada tidak pernah- awalan

Saya masih mendapatkan "interface name must start with a capitalized I"

ini tslint.json saya:

{
  "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"
    ]
  }
}

Apa yang saya lakukan salah?

@ offg777 Tidak ada yang jelas. Tautan ke repo?

Konfigurasi terlihat benar bagi saya - apakah Anda yakin tidak ada lagi yang mengesampingkannya? Aturannya pasti bekerja dengan baik untukku

@offg777

"nama antarmuka harus dimulai dengan huruf I"

Dari mana Anda mendapatkan kesalahan ini? Dari IDE Anda atau saat menjalankan CLI?
Dan saya tidak tahu tentang aturan cascading yang tepat dari tslint, tetapi apakah Anda mencoba meletakkan blok "aturan" di bawah "memperpanjang"?

Besar

Apakah eslint sudah mendukungnya?

Pengaturan

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

menghasilkan
Configuration for rule "interface-name" is invalid

Mungkin aturan ini ada karena suatu alasan? Haruskah setiap antarmuka memiliki nama yang bermakna yang jelas berbeda dari kelas pelaksana?

Ini adalah ide yang sangat menyebalkan untuk memaksa seluruh dunia mengikuti preferensi Anda _di luar proyek Anda sendiri_. Obtrusi konvensi penamaan Anda sendiri dalam alat pemrograman adalah bug dari jaringan saraf pengembang produk;)

Untung TSLint sudah usang dan masalah ini tidak lagi relevan! #4534

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

CSchulz picture CSchulz  ·  3Komentar

mrand01 picture mrand01  ·  3Komentar

DanielKucal picture DanielKucal  ·  3Komentar

jacob-robertson picture jacob-robertson  ·  3Komentar

allbto picture allbto  ·  3Komentar