Proponuje się dodanie do języka JavaScript składni z informacją o typie

Microsoft, Igalia i Bloomberg podjęły inicjatywę włączenia składni do specyfikacji JavaScript dla jawnych definicji typów, podobnej do składni używanej w języku TypeScript. Obecnie do wstępnych dyskusji poddawane są prototypowe zmiany proponowane do umieszczenia w standardzie ECMAScript (Etap 0). Na kolejnym posiedzeniu komitetu TC39 w marcu planowane jest przejście do pierwszego etapu rozpatrywania propozycji z udziałem środowiska eksperckiego ECMA.

Posiadanie jawnie określonych informacji o typie pozwoli uniknąć wielu błędów podczas procesu programowania, umożliwi zastosowanie dodatkowych technik optymalizacji, uprości debugowanie i sprawi, że kod będzie bardziej czytelny oraz łatwiejszy do modyfikacji i wsparcia przez zewnętrznych programistów. Proponuje się zaimplementowanie obsługi typów jako funkcji opcjonalnej — silniki JavaScript i środowiska wykonawcze, które nie obsługują sprawdzania typu, będą ignorować adnotacje z informacjami o typie i przetwarzać kod jak poprzednio, traktując dane typu jako komentarze. Jednak narzędzia do sprawdzania typów będą mogły wykorzystać dostępne informacje do zidentyfikowania błędów związanych z nieprawidłowym użyciem typów.

Ponadto, w przeciwieństwie do informacji o typie określanych za pomocą adnotacji JSDoc podawanych w formie komentarzy, bezpośrednie wskazanie typów bezpośrednio w konstrukcjach definicji zmiennych sprawi, że kod będzie bardziej wizualny, zrozumiały i łatwiejszy do edycji. Na przykład IDE obsługujące TypeScript będą mogły natychmiast podświetlać błędy we wpisywanym kodzie JavaScript bez dodatkowych konwersji. Ponadto wbudowana obsługa typów umożliwi uruchamianie programów napisanych w dialektach JavaScriptu opartych na typach, takich jak TypeScript i Flow, bez konieczności przenoszenia z jednego języka na drugi.

Proponuje się dodanie do języka JavaScript składni z informacją o typie

Do typów proponuje się dodać „string”, „number” i „boolean”, które można wykorzystać przy definiowaniu zmiennych, parametrów funkcji, elementów obiektu, pól klas, tablic typu („liczba[]”). Proponuje się także zapewnienie obsługi typów scalonych („string | number”) i typów generycznych. niech x: ciąg; funkcja dodaj(a: liczba, b: liczba) { zwróć a + b; } interfejs Osoba { nazwa: string; wiek:liczba; } funkcja foo (x: T) { zwróć x; } funkcja foo(x: ciąg | liczba): ciąg | liczba { if (typeof x === liczba) { return x + 1 } else { return x + "!" } }

Źródło: opennet.ru

Dodaj komentarz