Czy istnieje sposób, aby powiadomić funkcję javascript, że określony parametr jest określonego typu?
Możliwość zrobienia czegoś takiego byłaby idealna:
function myFunction(Date myDate, String myString)
{
//do stuff
}
Dziękuję Ci!
Aktualizacja : Ponieważ odpowiedzią jest głośne "nie", jeśli chcę myDate
być traktowany jako data (aby wywołać na niej funkcje daty), muszę rzucić ją jako datę wewnątrz funkcji lub ustawić nową zmienną wpisz Data do tego?
javascript
function
dmr
źródło
źródło
Date
tylkoobject
.Date
jest funkcją. Zajrzyj na stackoverflow.com/questions/1646698/…, aby dowiedzieć się więcej onew
słowie kluczowym JavaScript . Ponieważ nie ma zajęć, nie ma castingu. Możesz po prostu wywołać wybrane funkcje. Jeśli obiekt je zawiera, będą działać, w przeciwnym razie wystąpi błąd.Odpowiedzi:
Nie, JavaScript nie jest językiem z typami statycznymi. Czasami może być konieczne ręczne sprawdzenie typów parametrów w treści funkcji.
źródło
instanceof
i, któretypeof
mogą w tym pomóc. Chociaż zajmuje to więcej kodu, być może to programista wybiera JavaScript jako język dla czegoś, co w dużej mierze zależy od typów. Co do ogromnych aplikacji backendowych nodejs? Myślę, że powinien to być zdrowy rozsądek.Nie w javascript, ale korzystając z zaawansowanego trybu Google Closure Compiler, możesz to zrobić:
Zobacz http://code.google.com/closure/compiler/docs/js-for-compiler.html
źródło
foo( /*MyType*/ param )
sposób opisany tutaj również działa: stackoverflow.com/a/31420719/1915920Chociaż nie możesz poinformować JavaScript o języku o typach, możesz poinformować o nich swoje IDE, dzięki czemu otrzymujesz znacznie bardziej przydatne autouzupełnianie.
Oto dwa sposoby, aby to zrobić:
Użyj JSDoc , systemu do dokumentowania kodu JavaScript w komentarzach. W szczególności będziesz potrzebować
@param
dyrektywy :Możesz także użyć JSDoc do zdefiniowania niestandardowych typów i określenia ich w
@param
dyrektywach, ale pamiętaj, że JSDoc nie wykona żadnego sprawdzania typów; to tylko narzędzie do dokumentacji. Aby sprawdzić typy zdefiniowane w JSDoc, zajrzyj do TypeScript , który może analizować tagi JSDoc .Użyj podpowiedzi typu, określając typ bezpośrednio przed parametrem w
/* comment */
:Jest to dość rozpowszechniona technika, używana na przykład przez ReactJS . Bardzo przydatne w przypadku parametrów wywołań zwrotnych przekazywanych do bibliotek zewnętrznych.
Maszynopis
W przypadku rzeczywistego sprawdzania typu najbliższym rozwiązaniem jest użycie TypeScript, ( głównie ) nadzbiór języka JavaScript. Oto TypeScript za 5 minut .
źródło
VSCode
?vi
jest nadużywanym edytorem, a nie IDE. Możesz robić wiele rzeczyvi
, podobnie jak tworzyć teledyski w programie Excel . Dobry pomysł? Prawdopodobnie nie. Użyj odpowiedniego narzędzia do pracy.Zapoznaj się z nową biblioteką Flow z Facebooka, „statycznym narzędziem do sprawdzania typów, zaprojektowanym do znajdowania błędów typu w programach JavaScript”
Definicja:
Sprawdzanie typu:
A oto jak to uruchomić .
źródło
Nie, zamiast tego musisz zrobić coś takiego w zależności od potrzeb:
źródło
Możesz zaimplementować system, który automatycznie obsługuje sprawdzanie typów , używając opakowania w funkcji.
Poniższa implementacja ilustruje główną ideę w uproszczony, ale praktyczny sposób :
źródło
Edycja: Siedem lat później ta odpowiedź wciąż otrzymuje sporadyczne głosy za. W porządku, jeśli szukasz funkcji sprawdzania w czasie wykonywania, ale teraz zalecałbym sprawdzanie typów w czasie kompilacji za pomocą Typescript lub prawdopodobnie Flow. Więcej informacji znajdziesz na https://stackoverflow.com/a/31420719/610585 powyżej.
Oryginalna odpowiedź:
Nie jest to wbudowane w język, ale możesz to zrobić samodzielnie. Odpowiedź Vibhu jest tym, co uważam za typowy sposób sprawdzania typów w Javascript. Jeśli chcesz czegoś bardziej uogólnionego, spróbuj czegoś takiego: (tylko przykład na początek)
źródło
Można to łatwo zrobić za pomocą ArgueJS :
źródło
Użyj
typeof
lubinstanceof
:źródło
Może taka funkcja pomocnicza. Ale jeśli zauważysz, że regularnie używasz takiej składni, prawdopodobnie powinieneś przełączyć się na Typescript.
źródło
Też o tym myślałem. W tle C możesz symulować typy kodu powrotu funkcji, a także typy parametrów, używając czegoś podobnego do następującego:
Liczba przed funkcją wywołującą zwraca typ Number niezależnie od typu zwracanej wartości rzeczywistej, jak widać w drugim wywołaniu, gdzie typeof rc = number, ale wartość to NaN
console.log dla powyższego to:
źródło
TypeScript jest obecnie jednym z najlepszych rozwiązań
https://www.typescriptlang.org/
źródło