Typy generyczne

S5
  • Rejestracja:około 4 lata
  • Ostatnio:prawie 2 lata
  • Postów:238
0

Mam taką funkcję generyczną:

Kopiuj
var logger = function<T>(input: T):T{
  console.log(input)
  return input
}

Zakładając, że wywołuję ta funkcję teraz w taki sposób:

Kopiuj
logger<number>(1);

Jak rozumiem teraz funkcja przyjmuje argument typu number oraz zwraca typ number?

edytowany 2x, ostatnio: Riddle
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:2 minuty
2

jeśli mnie nic nie ominęło to w javascript nie ma funkcji generycznych ani definiowania typów.
Prawdopodobnie chodzi Ci o typescript.

Proponuję zacząć naukę od początku, od czystego javascriptu bo teraz wydaje się że nawet nie ogarniasz ze składni jakiego języka korzystasz. Potem będzie łatwiej zrozumieć typy w typescripcie (i to że to tylko proteza i że ta funkcja at runtime tak naprawdę przyjmie wszystko i zwróci wszystko)


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
jarekr000000
Zasadniczo to typy są taką protezą w prawie każdym języku (w różnym stopniu, nawet w Haskellu) - w C/C++ można typy oszukiwać prawie tak samo łatwo jak w TS (tylko z gorszymi skutkami (UB)).
obscurity
tylko że w typescripcie nie trzeba robić niczego specjalnego żeby dać się oszukać. wystarczy zapytanie do serwera i już zwracany obiekt nie jest tym za co się podaje. override na toString() który zwraca coś co miało być stringiem a okazało się liczbą i aplikacja się sypie w całkiem innym miejscu
Riddle
@obscurity: to o czym mówisz @obscurity to porównujesz type checking w runtime od compiletime. TypeScript ma tylko sprawdzanie w compiletime, żeby nie było overheadu na wywołanie. To są różne koncepty i porówywanie ich do siebie jest nieadekwatne.
S5
  • Rejestracja:około 4 lata
  • Ostatnio:prawie 2 lata
  • Postów:238
0

Chodziło mi o typy generyczne w typescripcie. Pomyliło mi się. Czy w takim przypadku odnosząc się do pierwszego posta funkcja przyjmuje argument typu number oraz zwraca typ number?

edytowany 1x, ostatnio: sajek587
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 8 godzin
  • Lokalizacja:Laska, z Polski
  • Postów:10079
2

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.