2016-11-20 66 views
0

我正在考慮從原生JS切換到我正在開發的應用程序的TS。我創建了一個新的分支來測試事物 - Typescript本身似乎很好,但我面臨一個主要問題:我使用的一些供應商沒有任何或僅僅過時的定義文件。如何在TypeScript中處理沒有類型的供應商?

現在的問題是:如何處理缺失的定義文件?

我可以做類似

declare var sails: any; 

,但是這真的是一個好主意嗎?

回答

1
declare var sails: any; 

是一個破解。讓自己走,或者讓你嘗試一個圖書館來看看它是否會真正起作用是件好事,但你最好的選擇是明確的。 (任何時候你的項目中都有: any,它應該是一個紅旗,你需要修正一些東西 - 但實際上幾乎每個人都有一個any或兩個(或更多)浮動)。這就是說:像風帆一樣大的東西不是是一個any

那麼,你可以做什麼?

看待DefinitelyTyped

如果使用的是打字稿2,您可以通過

npm i -g @types/thing-you-want 

(不幸的是,它看起來並不安裝從肯定與故宮類型的定義像Sails是在DefinitelyTyped)

你也可以嘗試使用谷歌搜索,看看是否有其他人寫了一個定義文件,這是不是絕對鍵入,但仍然有效。

儘管做好準備,即使是明確輸入也不能保證是正確的,可能需要按摩。

寫您的定義,你需要他們

這可能是你反對什麼。這當然不是那麼徹底,但它通常會讓你走到你需要去的地方。查找您需要的API部分的文檔並將這些定義添加到您的.d.ts文件中。

如果你用這種方式去做,那麼它就不那麼令人難以置信,當你完成時你可以將你的工作貢獻給DefintielyTyped。

+0

感謝您的回覆。例如,Sails沒有當前版本的版本(至少我沒有找到任何東西)。如果我面對其他一兩個沒有任何定義的庫或框架,我會花費大量的時間來編寫定義......這聽起來像是一個很大的缺點,因爲它是一個嚴重的時間損失:/ – nehalist

+0

@ nehalist我認爲一個很大的原因是缺少TS支持是因爲CLI。當打字稿發生時,它可能來自維護框架的人,而不是社區。同時,您可以嘗試查看[流量](https://flowtype.org/),這在這種情況下有點寬容。 – drewwyatt

+0

最後一個想法:我建議你儘量不要讓這阻礙未來對Typescript的評估。我同意,根據您項目的規模(因爲您使用的是風帆),現在可能很難處理Typescript - 從Typescript開始通常比轉換更容易(尤其是在支持庫的情況下)。 – drewwyatt