2012-03-20 31 views
9

Tôi là một newbie với JavaScript và tôi cảm thấy cần phải unresistible để loại mạnh chức năng của tôi tham số cho một vài công cụ tôi mã hóa:JavaScript: tôi có thể bằng cách nào đó các tham số chức năng kiểu mạnh mẽ không?

  1. Điều đó sẽ cho tôi autocompletion trong những chức năng
  2. Debugging/chức năng truy cập được nhất quán hơn

Sau một số googling, tôi đoán điều này là không thể trực tiếp. Tuy nhiên, có những công cụ phổ biến để mô phỏng điều này khá đơn giản?

Suy nghĩ của bạn là gì?

+0

Không, ít nhất là theo ý nghĩa sẽ cho phép bạn sử dụng bất kỳ điểm nào bạn đã đề cập. – carlossless

+7

Ngôn ngữ không giống như vậy. Như với bất kỳ ngôn ngữ mới nào khác mà bạn học, điều rất quan trọng là phải chống lại sự cám dỗ để nhập khẩu các thành ngữ từ các ngôn ngữ khác mà bạn đã quen thuộc. Hãy để JavaScript là JavaScript và bạn sẽ hòa hợp với nó. – Pointy

Trả lời

9

Không, bạn không thể và ngay cả khi có cách bạn không nên làm. JavaScript là ngôn ngữ được nhập động. Hoàn thành tự động bạn tuy nhiên có thể sử dụng thẻ JSDoc tài liệu kiểu đó đưa ra một số gợi ý loại:

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

Nếu họ đang được sử dụng phụ thuộc hoàn toàn vào IDE của bạn mặc dù.

+0

Javascript 2, do được hoàn thành vào cuối năm 2013, sẽ thêm tùy chọn nhập mạnh mẽ. – Viesturs

+0

a) Tôi vẫn nghĩ đó là một ý tưởng tồi và b) điều này sẽ không đưa nó vào sản xuất cho đến khi có thể ba năm kể từ bây giờ. – Daff

+2

Đánh máy mạnh mẽ cho phép các nhà phát triển nhanh chóng nắm bắt các lỗi mà S W khác xảy ra khi chạy. Tại sao bạn nghĩ đó là một ý tưởng tồi? – LadyCailin

0

không, bạn không thể; javascript là ngôn ngữ được đánh máy yếu. Điều này có nghĩa là JavaScript sẽ tìm ra loại dữ liệu bạn có.

3

Bạn đã xem Google Closure Compiler chưa?

Một số IDE nhất định (như sản phẩm của Jetbrains) cố gắng hiểu JSDoc và trợ giúp, nhưng đôi khi trình phân tích chú thích của họ xung đột với Google Closure. Tuy nhiên, ngay cả với Đóng cửa, bạn sẽ không nhận được đánh máy hoàn hảo mạnh mẽ.

Ngoài ra, nó có thể quá mức cần thiết, nhưng hãy xem haXe.

2

JavaScript nhận các loại sau đây của các giá trị:

số: chẳng hạn như 42 hoặc 3,14159

logic (Boolean): giá trị đúng hoặc sai

Strings: chẳng hạn là "Howdy!"

null: từ khóa đặc biệt biểu thị giá trị null; null cũng là một giá trị nguyên thủy. Vì JavaScript phân biệt chữ hoa chữ thường, null không giống như Null, NULL hoặc bất kỳ biến thể nào khác

undefined: thuộc tính cấp cao nhất có giá trị không xác định; undefined cũng là một giá trị nguyên thủy.

Không có sự khác biệt rõ ràng giữa số nguyên và số thực có giá trị [...]

JavaScript là một ngôn ngữ động gõ.Điều đó có nghĩa bạn không cần phải xác định kiểu dữ liệu của một biến khi bạn khai báo nó, và các kiểu dữ liệu được chuyển đổi tự động khi cần thiết trong quá trình thực hiện kịch bản

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

Vì vậy, không có, bạn có thể không sử dụng loại mạnh trong JavaScript

10

Mọi người viết "bạn không nên sử dụng" là sai. Trong đặc tả Java Script 2.x tiếp theo, có một kế hoạch để thêm các biến được đánh máy mạnh.

Trong khi đó bạn có thể sử dụng giải pháp rất đơn giản để bắt chước các loại mạnh:

var = Object.create(String); 

Sau đó tự động điền trong rất nhiều IDE (bao gồm IntelliJ IDEA) sẽ làm việc tuyệt vời và bạn đã khai báo và khởi tạo một đối tượng của kiểu được chỉ định .

Đọc thêm trên my blog.

5

Bạn đã xem Bản thảo chưa? Một dự án mã nguồn mở của Microsoft cho phép bạn phát triển bằng cách gõ mạnh và sau đó biên dịch mã thành Javascript. Tôi biết là Microsoft nhưng hãy xem trước khi bạn bỏ qua nó.

http://www.typescriptlang.org/


Sửa 2017

Hiện nay có hai người chơi lớn trên cảnh này, nguyên cảo (như đề xuất ở trên) đã được chứng minh chiến đấu và bây giờ được sử dụng rộng rãi bởi các góc 2. Nếu cấu trúc và khá cứng nhắc gõ nếu những gì bạn đang tìm kiếm, đó là đặt cược tốt nhất của bạn.

Một tùy chọn khác là Flow (https://flow.org/) nó được phát triển bởi Facebook và được sử dụng bởi chúng rất nhiều trong React. Luồng cho phép bạn chỉ xác định tệp nào bạn muốn kiểm tra và là rào cản thấp hơn đối với mục nhập IMO.

Điều đáng nói là việc thêm kiểm tra loại thêm một số tiền hợp lý phức tạp vào quá trình xây dựng của bạn - nó đòi hỏi bạn phải có một quá trình xây dựng!

+0

Có, Daff đã đề xuất trong nhận xét của mình – Jerome

Các vấn đề liên quan