2012-03-20 4 views
9

Jestem newbie z JavaScript i czuję unresistible potrzebę silnego typu Moje funkcje parametrów dla kilku narzędzi jestem kodowania:JavaScript: czy mogę jakoś silnymi parametrami funkcji typu?

  1. To dałoby mi autouzupełnianie w tych funkcjach
  2. debugowanie/Dostęp do funkcji staje się bardziej spójny

Po pewnym przeszukaniu go, nie jest to bezpośrednio możliwe. Czy są jednak typowe narzędzia do naśladowania tego po prostu?

Jakie są Twoje myśli?

+0

Nie, przynajmniej nie w takim sensie, że pozwoliłoby ci użyć któregoś z punktów, o których wspomniałeś. – carlossless

+7

Język po prostu nie jest taki. Podobnie jak w przypadku każdego nowego języka, którego się uczysz, bardzo ważne jest, aby oprzeć się pokusie importowania idiomów z innych już znanych języków. Pozwól, by JavaScript był JavaScriptem, a dobrze się z nim dogadujesz. – Pointy

Odpowiedz

9

Nie, nie możesz i nawet jeśli jest sposób, że nie powinieneś. JavaScript jest językiem wpisanym dynamicznie. Na zakończenie auto można jednak użyć JSDoc dokumentacji styl tagów, które dają pewne wskazówki Typ:

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

Jeśli są one wykorzystywane zależy wyłącznie od twojej IDE chociaż.

+0

Javascript 2, który ma zostać sfinalizowany do końca 2013 r., Doda opcjonalne silne pisanie. – Viesturs

+0

a) Nadal uważam, że to zły pomysł i b) nie wejdzie do produkcji za jakieś trzy lata. – Daff

+2

Silne pisanie umożliwia programistom szybsze łapanie błędów, które w przeciwnym wypadku spowodują. Dlaczego uważasz, że to zły pomysł? – LadyCailin

0

nie, nie możesz; javascript jest słabo napisanym językiem. Oznacza to, że JavaScript rozpoznaje typ danych, które posiadasz.

3

Czy obejrzałeś Google Closure Compiler?

Niektóre IDE (np. Produkty Jetbrains) próbują zrozumieć JSDoc i pomóc, ale czasami ich parser adnotacji jest w konflikcie z Google Closure. Jednak nawet przy Zamknięciu nie uzyskasz idealnego, silnego pisania.

Ponadto może to być przesada, ale spójrz na haXe.

2

JavaScript rozpoznaje następujące typy wartości:

numery: takie jak 42 lub 3.14159

logiczna (Boolean): wartości prawda lub fałsz

Struny: takie jako "Cześć!"

null: specjalne słowo kluczowe oznaczające wartość pustą; wartość null jest również wartością pierwotną. Ponieważ w języku JavaScript rozróżniana jest wielkość liter, wartość null to nie to samo, co NULL, NULL lub jakikolwiek inny wariant, niezdefiniowana niezdefiniowana: nieokreślona: własność najwyższego poziomu, której wartość jest niezdefiniowana; undefined jest także prymitywną wartością.

Nie ma wyraźnego rozróżnienia pomiędzy całkowitą i wartościach rzeczywistych liczb [...]

JavaScript jest dynamicznie wpisany język.Oznacza to, że nie trzeba określić typ danych zmiennej kiedy zadeklarować ją i typy danych są konwertowane automatycznie w miarę potrzeby podczas wykonywania skryptu

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

Tak, nie, nie można używaj silnego typu w JavaScript

10

Osoby piszące "nie powinieneś tego używać" są w błędzie. W następnej specyfikacji Java Script 2.x jest plan dodawania silnych zmiennych pisanych.

Tymczasem można użyć bardzo proste rozwiązanie, aby naśladować silne typy:

var = Object.create(String); 

Po tej funkcji automatycznego uzupełniania w wielu IDE (łącznie IntelliJ IDEA) działa świetnie i zostały zgłoszone i inicjowany obiekt o określonym typie .

Przeczytaj więcej na temat my blog.

5

Czy obejrzałeś Maszynopis? Jest to projekt open source Microsoftu, który pozwala na rozwijanie przy użyciu silnego pisania, a następnie kompiluje kod do JavaScript. Wiem, że to Microsoft, ale spójrz, zanim go odrzucisz.

http://www.typescriptlang.org/


Edycja 2017

Istnieją obecnie dwa duże graczy na tej scenie, maszynopis (jak sugerowano powyżej) została bitwa sprawdzony i jest obecnie szeroko stosowane przez kątowy 2. Jeżeli struktura i dość sztywne pisanie, jeśli to, czego szukasz, jest najlepszym rozwiązaniem.

Inną opcją jest Flow (https://flow.org/), który został opracowany przez Facebook i jest przez nich używany w React. Flow pozwala ci tylko określić, które pliki chcesz wpisać, i jest niższą barierą wejścia IMO.

Warto dodać, że dodanie kontroli typów dodaje sporo komplikacji do procesu kompilacji - wymaga to procesu kompilacji!

+0

Tak, Daff zasugerował to w swoim komentarzu – Jerome

Powiązane problemy