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"
]
}
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.
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)