Tslint: Abaikan satu baris dengan satu komentar

Dibuat pada 2 Jun 2014  ·  31Komentar  ·  Sumber: palantir/tslint

Apakah ada cara untuk mengabaikan satu baris, seperti di jshint?
Saya telah mencoba // tslint abaikan: baris tetapi sepertinya tidak berhasil.

P2 Fixed Accepting PRs Feature Request

Komentar yang paling membantu

Bagi siapa pun di sini untuk menemukan solusi solusi

/* tslint:disable */ - Disable all rules for the rest of the file
/* tslint:enable */ - Enable all rules for the rest of the file

misalnya
/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */

Semua 31 komentar

sayangnya, kami belum memiliki hal seperti itu. Anda harus mengaktifkan & menonaktifkan garis secara eksplisit.

Bagaimana Anda menonaktifkan garis?

Bagi siapa pun di sini untuk menemukan solusi solusi

/* tslint:disable */ - Disable all rules for the rest of the file
/* tslint:enable */ - Enable all rules for the rest of the file

misalnya
/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */

apakah ada penyelidikan untuk mengimplementasikan fitur serupa seperti yang dijelaskan di atas?

@patsissons fitur apa sebenarnya? Saat ini dimungkinkan untuk mengaktifkan/menonaktifkan satu baris dengan dua komentar.

fitur ini akan menjadi penonaktifan baris yang lebih sedikit. ESLint memiliki beberapa metode untuk melakukan penonaktifan aturan baris tunggal.

Sebagai contoh,

// eslint-disable-next-line rule-name
var x; // eslint-disable-line rule1 rule2

Metode pembungkus sangat bagus sebagai redundansi untuk penonaktifan aturan yang kompleks, tetapi sebaris (atau baris berikutnya) cenderung membuat kode tidak terlalu tercemar (ini tentu saja pendapat saya, tetapi mungkin tidak terlalu tidak masuk akal).

Ini berisik:

/* tslint:disable */ window['foo']= window['bar']; /* tslint:enable */

Ini jauh lebih baik:

var x; // eslint-disable-line rule1 rule2

Atau bahkan hanya:

var x; // tslint:disable

Fakta bahwa itu adalah komentar baris akan menyiratkan bahwa itu hanya akan menonaktifkan satu baris itu saja, saya pikir.

Atau paling buruk:

var x; // tslint:disable-line

menerima PR untuk ini. inilah perubahan yang agak terkait baru-baru ini yang memungkinkan komentar // alih-alih /* untuk menonaktifkan (meskipun dua komentar masih diperlukan): https://github.com/palantir/tslint/pull/1134

Saya akan mencoba dan mendapatkan ini malam ini, jika tidak terlalu menantang semoga malam ini PR juga

👍 Mari ikuti dengan seksama ESLint di sini:

someCode(); // tslint:disable-line

// tslint:disable-next-line
someCode();

dan

someCode(); // tslint:disable-line:rule1 rule2

// tslint:disable-next-line:rule1
someCode();

Itulah tepatnya yang ingin saya capai :+1:

meskipun, hanya untuk kejelasan, ESLint tidak menggunakan titik dua, gayanya adalah sebagai berikut:

// eslint-disable-next-line rule1, rule2
someCode();

Saya akan berasumsi bahwa Anda lebih suka kami tetap menggunakan gaya TSLint yang Anda sertakan di atas (titik dua dan tidak ada aturan pemisah koma).

👍 Mari tetap berpegang pada gaya TSLint untuk konsistensi

Saya memiliki ini bekerja sekarang dan saya hanya akan melalui beberapa pembersihan komit sebelum saya membuat PR. Strateginya adalah untuk menyembunyikan varian -line dan -next-line ke dalam sakelar komentar yang diekspresikan sepenuhnya. Ini dilakukan dengan melacak posisi awal baris (untuk sakelar -line ) dan melakukan pandangan ke depan untuk akhir baris berikutnya (untuk sakelar -next-line ). Ini tampaknya bekerja cukup baik dan memiliki efek samping minimal karena hanya bertindak sebagai alias untuk format yang lebih bertele-tele.

Sekedar catatan sebelum saya mendapatkan PR saya, karena cara kerja kode interval yang dinonaktifkan, Anda tidak akan dapat melakukan sesuatu seperti ini

// tslint:disable-next-line:quotemark variable-name
var AAAaA = 'test' // tslint:enable-line variable-name

Sejujurnya saya tidak pernah mengharapkan seseorang untuk melakukan sesuatu seperti itu, tetapi saya hanya ingin mencatatnya di sini. Anda masih bisa melakukan nesting standar seperti ini

// tslint:disable
var AAAaA = 'test' // tslint:enable-line:quotemark
// tslint:enable-next-line:variable-name
var AAAaA = 'test'
// tslint:enable

Pertanyaan tentang implementasinya, apakah ini berhasil?

/**
 * this is a very long line and violate max-line-length. // tslint:disable-line:max-line-length
 */

Tidak, komentar sakelar tidak diuraikan seperti itu, mereka harus diformat dengan benar. Saya percaya pada contoh Anda, Anda akan menempatkan satu baris menonaktifkan komentar di luar komentar multi-baris dan itu akan berfungsi seperti yang diharapkan.

Terima kasih atas klarifikasi, mengerti.

@lijunle baru saja meninjau kembali contoh Anda, saya pikir penjelasan saya sebenarnya agak salah. Saya tidak berpikir Anda dapat mencapai hasil yang diinginkan dengan penonaktifan satu baris. Saya percaya parser tidak akan dapat menjangkau kembali untuk menonaktifkan seluruh komentar multi-baris dengan benar. untuk menonaktifkan aturan dalam komentar multi-baris, Anda perlu membungkus komentar dengan sepasang sakelar.

tidak ada satu pun di atas yang berfungsi
apakah Anda berbicara tentang proposisi fitur atau yang sudah diimplementasikan?
sulit diikuti

@phil123456 https://github.com/palantir/tslint#rule -flags

// tslint:disable-next-line <optional rule identifier>
var foo = 123;

Neraka. Baik kata "menekan" atau "mengabaikan" tidak muncul dalam dokumentasi itu. Saya tidak percaya berapa banyak googling yang diperlukan untuk membawa saya ke masalah ini, baca semua hal di atas, hanya untuk menemukan itu adalah fitur yang didukung dan didokumentasikan, tetapi kata kunci yang sesuai tidak ada dalam dokumen sehingga tidak mungkin untuk Google. Apakah Anda harus mengkloning seluruh repo dan mengirimkan PR untuk itu, atau adakah cara yang lebih cepat untuk menyarankan perbaikan pada file .md?

@pbarranis Anda dapat membuat tiket baru dengan itu sebagai permintaan fitur. Jika mereka tidak membuat perubahan maka membuat PR mungkin langkah berikutnya.

Omong-omong, Anda juga dapat melakukannya di baris yang sama:

console.log("poop"); // tslint:disable-line no-console

Setidaknya pada [email protected].

Ini tidak bekerja dengan aturan seperti ordered-imports

//@ts-ignore
https://palantir.github.io/tslint/rules/

sayangnya halaman ini hanya menunjukkan cara melarang penggunaan ini. Itu tidak menunjukkan cara menggunakannya dengan benar atau menjelaskan berapa banyak yang diabaikan tsLint saat Anda menggunakannya. Tidak tahu mengapa tidak disebutkan di halaman ini yang menjelaskan cara menekan aturan https://palantir.github.io/tslint/usage/rule-flags/
Dan saya setuju dengan komentar di atas yang menanyakan MENGAPA halaman ini tidak menyebutkan kata "suppress" atau "ignore" sehingga mudah ditemukan saat menggunakan Google?
FYI halaman ini sekarang mengatakan TSLint menjadi EOL tahun ini: https://github.com/palantir/tslint#tslint -rule-flags

Ah, tslint akhirnya (belum) digabung ke eslint, jadi itu bagus kurasa.

Intinya, sekarang tslint mendukung fitur abaikan baris berikutnya.

Contoh:

// tslint:disable-next-line

Atau

// tslint:disable-next-line:rule1 rule2 rule3

Untuk detail & contoh lebih lanjut, lihat https://palantir.github.io/tslint/usage/rule-flags/

Bunyi bip! TSLint tidak digunakan lagi dan Anda harus beralih ke TypeScript-eslint ! 🤖

Masalah ini sedang dikunci untuk mencegah diskusi lebih lanjut yang tidak perlu. Terima kasih! 👋

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

mrand01 picture mrand01  ·  3Komentar

dashmug picture dashmug  ·  3Komentar

zewa666 picture zewa666  ·  3Komentar

allbto picture allbto  ·  3Komentar

SwintDC picture SwintDC  ·  3Komentar