web-dev-qa-db-ja.com

特定の行のtsルールを無効にする方法は?

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

/* 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の方が望ましいです。

53
y2bd

この回答 と同様に、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)
0
macklinu