簡體   English   中英

使用DataTables選項和TypeDefinitions時如何解決TS編譯錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM