2017-04-25 34 views
1

Summernote是一個jQuery插件,我不需要它的類型定義。我只是想修改對象,但TS不斷拋出錯誤。下面的線條仍然給我:「屬性'summernote'在'jQueryStatic'類型上不存在。」錯誤。如何禁用特定行的ts規則?

(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" 
    ] 
} 

回答

4

您可以使用/* tslint:disable-next-line */在本地禁用tslint。但是,由於這是編譯器錯誤,禁用tslint可能無濟於事。

您隨時都可以臨時投$any

delete (<any>$).summernote.options.keyMap.pc.TAB 

,這將允許您訪問任何你想要的屬性。

+0

這是唯一結束了工作。謝謝! – Amir

0

類似this answer,您可以覆蓋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

在問我的問題之前,我確實發現了這一點,但這也沒有奏效。這就像JQueryStatic沒有被擴展,儘管聲明。 – Amir

+0

這些是我測試我的答案的步驟: *全局安裝TypeScript - 'npm install -g typescript' *在一個新目錄中,運行'npm init -y'創建一個'package.json' *安裝JQuery - 'npm install jquery --save' *安裝JQuery類型定義 - 'npm install @ types/jquery --save-dev' *創建一個默認的'tsconfig.json'文件 - 'tsc --init' *創建一個TypeScript文件 - 'touch index.ts' *將我的答案的內容粘貼到'index.ts'中 *執行'tsc index.ts' - TypeScript成功編譯該文件 @Amir請問您可以分享更多你的TypeScript配置? – macklinu