[英]How can I resolve the following compilation error when running Jest for testing?
[英]How to resolve TS compilation error when DataTables options and TypeDefinitions are used?
我已經在Visual Studio中創建了一個最小的TypeScript項目。 我使用jQuery插件DataTables。 我通過NuGet包管理器為jQuery和DataTables添加了TypeDefinitions。 一切正常。 這些定義通常可以正常工作,因為我可以對jQuery和DataTable函數使用IntelliSense自動完成功能。
但是,只要將用於表配置的選項對象添加到DataTables構造函數中,我就會遇到編譯器錯誤。
window.onload = () => {
$(document).ready(function() {
var table = $('#example').DataTable({
"paging": false
});
});
};
第一個錯誤是:
嚴重性代碼描述項目文件行抑制狀態錯誤Build:類型'{“ paging”的參數:false; }”不能分配給“設置”類型的參數。 TS_DT_withoutErrors TS_DT_withoutErrors C:\\ project_path ... \\ TS_DT_withoutErrors \\ app.ts 3
第二個錯誤是:
嚴重性代碼說明項目文件行抑制狀態錯誤TS2345(TS)類型'{“ paging”的參數:false; }”不能分配給“設置”類型的參數。 屬性'oFeatures'在類型'{“ paging”中丟失:false; }'。 TS_DT_withoutErrors C:\\ project_path ... \\ TS_DT_withoutErrors \\ app.ts
我可以為對象添加一個"oFeatures": null,
屬性,但這只是將第二條錯誤消息更改為:類型'{{oFeatures“:null;中缺少屬性'oScroll' 。 “分頁”:false; }'。 我可以繼續添加下一個編譯器需要的每個屬性,但是經過50多行之后,我看不到盡頭。
我猜想Definition文件已經過時了,需要的屬性不再是DataTables中的東西,或者它想要的內部屬性不應該由庫的用戶更改,因為這些屬性甚至在官方文檔中都沒有提及。
我知道我可以以忽略錯誤的方式配置TypeScript編譯器的構建設置,並且仍然會發出捆綁和編譯的js文件,但這對我而言並不是真正的解決方案。
因此,如果有人可以告訴我如何以及在何處可以貢獻和更改DataTables定義,或者如何告訴編譯器忽略這兩個特定錯誤,那將是很棒的。
我使用的軟件包如下:
<packages>
<package id="jQuery" version="2.1.0" targetFramework="net45" />
<package id="jquery.dataTables.TypeScript.DefinitelyTyped" version="0.6.7" targetFramework="net452" />
<package id="jquery.TypeScript.DefinitelyTyped" version="3.1.2" targetFramework="net452" />
</packages>
簡易解決方案(TL; DR使用任何類型)
我意識到這種類型的錯誤有一個簡單的解決方案,或者說是解決方法。 只需使用類型any
的設置對象。
var settingsObj: any = {
"paging": false
}
var table = $('#example').DataTable(settingsObj);
DataTables構造函數需要一個類型為DataTables.Settings
的參數。 當將type any
用於設置對象時,typescript編譯器不會再因錯誤的參數類型而引發錯誤。
更好的方法
研究DataTables typedefiniton文件的內容並更改DataTables.Settings
類使其類似於官方DataTables文檔的方法可能會更好。 但是只使用type也是可以的。
var settingsObj: DataTables.Settings = {
"paging": false
//several properties would be expected here
//or should be removed from DT TypeDefinition file
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.