Summernote est un plugin jQuery, et je n'ai pas besoin de définitions de type pour cela. Je veux juste modifier l'objet, mais TS continue de générer des erreurs. La ligne ci-dessous me donne encore: "La propriété 'summernote' n'existe pas sur le type 'jQueryStatic'." Erreur.
(function ($) {
/* tslint:disable */
delete $.summernote.options.keyMap.pc.TAB;
delete $.summernote.options.keyMap.mac.TAB;
/* tslint:enable */
})(jQuery)
Modifier:
Voici mon tsconfig.json
{
"compilerOptions": {
"outDir": "./dist/",
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es5",
"allowJs": true,
"noUnusedParameters": true
},
"include": [
"js/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
Vous pouvez utiliser /* tslint:disable-next-line */
pour désactiver localement tslint. Cependant, comme il s’agit d’une erreur du compilateur, la désactivation de tslint pourrait ne pas aider.
Vous pouvez toujours convertir temporairement $
en any
:
delete ($ as any).summernote.options.keyMap.pc.TAB
ce qui vous permettra d'accéder aux propriétés de votre choix.
Edit: A partir de TypeScript 2.6, vous pouvez maintenant contourner une erreur/un avertissement du compilateur pour une ligne spécifique:
if (false) {
// @ts-ignore: Unreachable code error
console.log("hello");
}
Notez que la documentation officielle "vous recommande d'utiliser [ceci] avec parcimonie" . Il est presque toujours préférable de lancer cast à any
à la place car cela exprime mieux l'intention.
Semblable à cette réponse , vous pouvez remplacer la définition du type JQueryStatic
pour inclure la propriété 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)