2012-03-20 53 views
9

我是用JavaScript一個新手,我覺得unresistible需要強力型我的函數參數的一對夫婦的工具,我編碼:JavaScript:我能以某種方式強大的類型函數參數嗎?

  1. 這會給我的職責範圍內自動完成
  2. 調試/功能訪問得到更一致的

一些谷歌搜索後,我想這不是直接可能的。但是,是否有通用的工具來模擬這個過程?

你的想法是什麼?

+0

不是,至少在不允許你使用你提到的任何一點的意義上。 – carlossless 2012-03-20 15:31:28

+7

這種語言就是這樣。和其他你學習的新語言一樣,抵制從你熟悉的其他語言中導入習語的誘惑是非常重要的。讓JavaScript成爲JavaScript,你會相處得很好。 – Pointy 2012-03-20 15:31:37

回答

9

不,你不能,即使有一種你不應該的方式。 JavaScript是一種動態類型的語言。對於自動完成,你可以使用,無論是給某些類型的指針JSDoc風格的文檔標籤:

var Person = { 
    /** 
    * Say hi 
    * @param {String} name The name to say hi to 
    * @return {String} 
    */ 
    sayHi : function(name) 
    { 
     return 'Hi ' + name; 
    } 
} 

如果正在使用它們完全取決於你的IDE雖然。

+0

由於在2013年底之前完成,所以Javascript 2將增加可選的強類型。 – Viesturs 2013-02-10 18:26:12

+0

a)我仍然認爲這是一個糟糕的主意,並且b)從現在起三年之後,它不會投入生產。 – Daff 2013-02-11 17:44:57

+2

強大的鍵入功能使開發人員能夠更快速地捕獲在運行時會發生的錯誤。你爲什麼認爲這是一個壞主意? – LadyCailin 2013-06-21 12:51:55

0

不,你不能; javascript是一種弱類型語言。這意味着JavaScript會找出你有什麼類型的數據。

3

你看過Google Closure Compiler

某些IDE(如Jetbrains的產品)試圖理解JSDoc並提供幫助,但有時它們的註釋解析器與Google Closure的衝突。然而,即使在閉合時,你也不會得到完美的打字效果。

此外,它可能是矯枉過正,但看看haXe

2

的JavaScript識別以下類型的值:

編號:如42或3.14159

邏輯(布爾):值真或假

字符串:如作爲「你好!」

null:表示空值的特殊關鍵字; null也是一個原始值。由於JavaScript區分大小寫,因此null與Null,NULL或任何其他變體不相同

undefined:其值未定義的頂級屬性;未定義也是一個原始值。

有整數和實值數之間沒有明顯的區別 [...]

JavaScript是一種動態類型語言。這意味着你不必在聲明它指定一個變量的數據類型,並在腳本執行期間

https://developer.mozilla.org/en/JavaScript/Guide/Values%2C_Variables%2C_and_Literals

所以,不,你不能在需要的數據類型自動轉換在JavaScript中使用強類型

10

寫作「你不應該使用它」的人是錯誤的。在下一個Java Script 2.x規範中,計劃添加強類型變量。

同時你可以用很簡單的解決方案來模擬強類型:

var = Object.create(String); 

在很多IDE(包括IntelliJ IDEA的)的那個自動填充後,將工作的偉大,你已經聲明和初始化指定類型的對象。

my blog上閱讀更多信息。

5

你看過Typescript嗎?它是微軟的一個開源項目,它允許你使用強類型進行開發,然後將代碼編譯成Javascript。我知道的是微軟,但在你解僱它之前先看看。

http://www.typescriptlang.org/


編輯2017年

有現在這樣的場景兩大球員,打字稿(如上建議)已被證明的戰鬥,現在由角2.廣泛使用。如果結構和相當嚴格的打字,如果你在找什麼,那是你最好的選擇。

另一個選項是Flow(https://flow.org/),它由Facebook開發並在React中被大量使用。 Flow允許你只指定你想輸入的文件檢查,並且是進入IMO的較低的障礙。

值得一提的是,添加類型檢查爲您的構建過程增添了相當多的複雜性 - 它需要您有構建過程!

+0

是的,達夫在他的評論中提出了這個建議 – Jerome 2014-05-02 20:45:17

相關問題