![](/img/trans.png)
[英]How do I create custom Java-like class/object in Cocos2d Javascript and add it to a layer
[英]Java-like code autocompletion with JavaScript?
作為一名 Java 開發人員,我已經習慣於能夠從 IDE 的代碼完成中看到所有相關信息。 下面是一個來自 Eclipse IDE 的代碼自動完成示例。 例如,您可以看到函數contentEquals
的返回類型是一個布爾值,它需要一個類型為StringBuffer
參數。 此外,如果有 JavaDoc,您甚至可以很好地解釋應該如何使用該函數。
現在我在用 JavaScript 編碼時正在尋找類似的東西。 我開始使用 Webstorm 是因為我想要一個具有更高級功能的 IDE,但是當您查看代碼自動完成功能時,它要么看起來很糟糕,要么我沒有正確使用它。
有人可以幫我弄清楚嗎?
下面是一個更具體的例子:
假設您想通過使用 navigator.geolocation 獲取用戶的位置。 假設您知道通過調用 getCurrentPosition() 方法可以完成的工作。
你繼續輸入你的IDE(在我的例子中是Webstorm):
navigator.geolocation.getCurrentPosition()
以下是 Webstorm IDE 的內容:
好的,它告訴我有一個強制參數和幾個可選參數來調用這個方法。 比方說,您只想使用強制參數來調用它,該參數應該是一個函數。 到目前為止一切順利,但什么樣的功能呢? 這個函數應該帶參數嗎? 它會返回任何東西嗎? 沒有任何提示。
我在網上的各種例子中發現,這個回調函數實際上只帶一個參數,所以我繼續寫它:
function printPosition(position) {
// do something
}
但是下一個問題來了:這個參數position
是什么類型? 你能用它做什么?
嗬嗬? 它給了我各種各樣的東西,但根本不是我正在尋找的東西。 所以我再次以谷歌結束。
這是它應該是什么樣子:
console.log(position.coords.latitude + ' , ' + position.coords.longitude);
老實說,我從來沒有想到這是通過查看自動完成來完成的,這很煩人,因為我習慣於在 Java 中編碼時能夠做到這一點。
任何人都可以與我所經歷的有關嗎? 我錯過了什么嗎? 任何幫助將不勝感激!
簡而言之,因為 JavaScript 不是像 Java 那樣的強類型語言,所以您無法像在 Java 中那樣獲得超細粒度的自動完成功能,除非開發人員已包含 WebStorm(或任何 IDE)可以解釋的注釋。
您可以使用Google Closure Annotation或JSDoc3來實現這些注釋。 使用這些,您可以手動指定可以自動完成的注釋。
但是,如果沒有這些,WebStorm 確實只是盡力猜測它需要什么,而且它通常無法很好地猜測(這就是為什么您會在上一個屏幕截圖中獲得包含基本所有內容的龐大列表的原因)。
使用 JavaScript,您只需要依賴文檔。
Javascript是一種動態的弱類型語言:類型是松散的,可以在運行時更改,因此IDE無法提供准確的補全,除非它可以在代碼文檔( JSDoc )的形式下找到提示。
您應該嘗試一下Typescript :這是來自Microsoft的Javascript 編譯器,它添加了強類型(使用類似C#的語法)。 它還允許使用最新的ECMA實現編寫代碼。 它在編譯時將一致的類型檢查添加到IDE 中。
換句話說,這是一種編寫現代Javascript 的方法(在類、生成器、擴展運算符等的支持下),以及類型(類型、泛型、接口)和一些Typescript特定功能(可能會使其成為考慮到微軟對這些規范的影響,進入下一個ECMA版本)。
這就是Typescript編譯器,它負責將所有這些代碼轉換為純且向后兼容的Javascript代碼,可以在較舊的瀏覽器/平台上運行。
查看手冊以了解語法的外觀: https : //www.typescriptlang.org/docs/handbook/advanced-types.html
限制:
和最后一句話: VSCode也是打字稿好的IDE,比WebStorm但自由更少無遺。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.