Summernote ist ein jQuery-Plugin, für das ich keine Typdefinitionen benötige. Ich möchte nur das Objekt ändern, aber TS wirft immer wieder Fehler. Die folgende Zeile gibt mir immer noch Folgendes an : "Die Eigenschaft 'summernote' ist für den Typ 'jQueryStatic' nicht vorhanden." Error.
(function ($) {
/* tslint:disable */
delete $.summernote.options.keyMap.pc.TAB;
delete $.summernote.options.keyMap.mac.TAB;
/* tslint:enable */
})(jQuery)
Bearbeiten:
Hier ist meine tsconfig.json
{
"compilerOptions": {
"outDir": "./dist/",
"sourceMap": true,
"noImplicitAny": true,
"module": "commonjs",
"target": "es5",
"allowJs": true,
"noUnusedParameters": true
},
"include": [
"js/**/*"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
@ts-ignore
eines bestimmten Fehlers.@ts-expect-error
TS 3.9 führt einen neuen magischen Kommentar ein.
@ts-expect-error
werden:@ts-ignore
if (false) { // @ts-expect-error: Let's ignore a single compiler error like this unreachable code console.log("hello"); // compiles } // If @ts-expect-error didn't suppress anything at all, we now get a nice warning let flag = true; // ... if (flag) { // @ts-expect-error // ^~~~~~~~~~~~~~~^ error: "Unused '@ts-expect-error' directive.(2578)" console.log("hello"); }
Alternativen
@ts-ignore
und@ts-expect-error
kann für alle Arten von Compilerfehlern verwendet werden. Für Typprobleme (wie in OP) empfehle ich aufgrund des engeren Bereichs zur Fehlerunterdrückung eine der folgenden Alternativen:▶
any
Typ verwenden// type assertion for single expression delete ($ as any).summernote.options.keyMap.pc.TAB; // new variable assignment for multiple usages const $$: any = $ delete $$.summernote.options.keyMap.pc.TAB; delete $$.summernote.options.keyMap.mac.TAB;
▶ Augment-
JQueryStatic
Schnittstelle// ./global.d.ts interface JQueryStatic { summernote: any; } // ./main.ts delete $.summernote.options.keyMap.pc.TAB; // works
In anderen Fällen sind Kurzmoduldeklarationen oder Modulerweiterungen für Module ohne / erweiterbaren Typ nützliche Dienstprogramme. Eine praktikable Strategie besteht auch darin , nicht migrierten Code beizubehalten
.js
und--allowJs
mit ihm zu verwendencheckJs: false
.quelle