SummernoteはjQueryプラグインであり、タイプ定義は必要ありません。オブジェクトを変更したいだけですが、TSはエラーをスローし続けます。以下の行はまだ私に与えます:"プロパティ 'summernote'はタイプ 'jQueryStatic'に存在しません。"エラー。
(function ($) {
/* tslint:disable */
delete $.summernote.options.keyMap.pc.TAB;
delete $.summernote.options.keyMap.mac.TAB;
/* tslint:enable */
})(jQuery)
編集:
これが私のtsconfig.jsonです
{
"compilerOptions": {
"outDir": "./dist/",
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es5",
"allowJs": true,
"noUnusedParameters": true
},
"include": [
"js/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
/* tslint:disable-next-line */
を使用して、tslintをローカルで無効にすることができます。ただし、これはコンパイラエラーであるため、tslintを無効にすると解決しない場合があります。
一時的に$
をany
にいつでもキャストできます:
delete ($ as any).summernote.options.keyMap.pc.TAB
これにより、必要なプロパティにアクセスできます。
編集:TypeScript 2.6以降、特定の行のコンパイラエラー/警告をバイパスできるようになりました。
if (false) {
// @ts-ignore: Unreachable code error
console.log("hello");
}
公式ドキュメント「[これ]を非常に控えめに使用することをお勧めします」 意図をよりよく表現するため、代わりにany
にキャストすることがほぼalwaysの方が望ましいです。
この回答 と同様に、JQueryStatic
タイプ定義をオーバーライドして、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)