Bagaimana cara menonaktifkan aturan ts untuk baris tertentu?

Summernote adalah plugin jQuery, dan saya tidak memerlukan definisi tipe untuk itu. Saya hanya ingin memodifikasi objek, tetapi TS terus melempar kesalahan. Baris di bawah ini masih memberi saya: "Property 'summernote' tidak ada pada tipe 'jQueryStatic'." error.

(function ($) {

  /* tslint:disable */
  delete $.summernote.options.keyMap.pc.TAB;
  delete $.summernote.options.keyMap.mac.TAB;
  /* tslint:enable */

})(jQuery)

Edit:

Berikut adalah tsconfig.json saya

{
  "compilerOptions": {
    "outDir": "./dist/",
    "sourceMap": true,
    "noImplicitAny": true,
    "module": "commonjs",
    "target": "es5",
    "allowJs": true,
    "noUnusedParameters": true
  },
  "include": [
      "js/**/*"
  ],
  "exclude": [
      "node_modules",
      "**/*.spec.ts"
  ]
}
Larutan

Anda dapat menggunakan /* tslint:disable-next-line */ untuk menonaktifkan tslint secara lokal. Namun, karena ini adalah kesalahan kompilator, menonaktifkan tslint mungkin tidak membantu.

Anda selalu dapat meng-cast sementara $ ke any:

delete ($ as any).summernote.options.keyMap.pc.TAB

yang akan memungkinkan Anda untuk mengakses properti apa pun yang Anda inginkan.


Sunting: Pada Typescript 2.6, Anda sekarang dapat melewati kesalahan/peringatan kompiler untuk baris tertentu:

if (false) {
    // @ts-ignore: Unreachable code error
    console.log("hello");
}

Perhatikan bahwa dokumen resmi "merekomendasikan Anda menggunakan [ini] dengan sangat hemat". Hampir selalu lebih baik untuk melakukan cast ke any sebagai gantinya karena itu lebih baik mengekspresikan maksud.

Komentar (2)

Mirip dengan jawaban ini, Anda dapat menimpa definisi tipe JQueryStatic untuk menyertakan properti summernote.

interface JQueryStatic {
  // Opt out of type-checking summernote using the any type
  // See https://www.typescriptlang.org/docs/handbook/basic-types.html#any
  summernote: any
}

(function ($) {

  delete $.summernote.options.keyMap.pc.TAB;
  delete $.summernote.options.keyMap.mac.TAB;

})(jQuery)
Komentar (2)