web-dev-qa-db-fra.com

Comment désactiver une règle ts pour une ligne spécifique?

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"
  ]
}
16
Amir

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.

25
y2bd

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)
0
macklinu