Proponuje się dodanie składni z informacjami o typach do języka JavaScript

Firmy Microsoft, Igalia oraz Bloomberg zaproponowały dodanie do specyfikacji JavaScript składni dla jawnego określania typów, podobnej do tej stosowanej w języku TypeScript. Obecnie prototyp zmian, zaproponowany do włączenia do standardu ECMAScript, został przedłożony do wstępnych dyskusji (Etap 0). Na najbliższym marcowym posiedzeniu komitetu TC39 planuje się przejście do pierwszej fazy rozpatrywania propozycji z udziałem społeczności ekspertów z ECMA.

Jawne definiowanie informacji o typach pozwoli uniknąć wielu błędów w trakcie rozwoju, umożliwi zastosowanie dodatkowych technik optymalizacji, uprości debugowanie i sprawi, że kod będzie bardziej czytelny i łatwiejszy do modyfikacji oraz wsparcia przez zewnętrznych deweloperów. Proponuje się, aby wsparcie typów zostało zrealizowane w formie opcji opcjonalnej — silniki JavaScript i runtime, które nie wspierają sprawdzania typów, będą ignorować adnotacje z informacjami o typach i obsługiwać kod jak dotychczas, traktując dane o typach jako komentarze. Narzędzia do sprawdzania typów będą mogły na podstawie dostępnych informacji wykrywać błędy związane z niewłaściwym użyciem typów.

W odróżnieniu od informacji o typach, definiowanych za pomocą adnotacji JSDoc w postaci komentarzy, bezpośrednie określenie typów w definicjach zmiennych uczyni kod bardziej przejrzystym, zrozumiałym i łatwiejszym do edytowania. Na przykład zintegrowane środowiska programistyczne wspierające TypeScript będą mogły od razu podświetlać błędy w kodzie JavaScript z typami bez dodatkowych przekształceń. Co więcej, wbudowane wsparcie typów umożliwi uruchamianie programów napisanych w typowanych dialektach JavaScript, takich jak TypeScript i Flow, bez transpilacji między jednym językiem a drugim.

Proponuje się dodanie składni z informacjami o typach do języka JavaScript

Из типов предлагается добавить «string», «number» и «boolean», которые можно будет использовать при определении переменных, параметров функций, элементов объектов, полей классов, типизированных массивов («number[]»). Предлагается также обеспечить поддержку объединённых типов («string | number») и дженериков. let x: string; function add(a: number, b: number) { return a + b; } interface Person { name: string; age: number; } function foo<T>(x: T) { return x; } function foo(x: string | number): string | number { if (typeof x === number) { return x + 1 } else { return x + «!» } }

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster