devnews.pl

Main Menu

  • Informacje
    • Systemy i przeglądarki
    • Gadżety
  • Narzędzia
  • Frontend
  • Backend
  • QA
  • Języki programowania

logo

devnews.pl

  • Informacje
    • Systemy i przeglądarki
    • Gadżety
  • Narzędzia
  • Frontend
  • Backend
  • QA
  • Języki programowania
FrontendJęzyki programowania
Home›Frontend›TypeScript 4.1 Beta dostępny z nowymi funkcjami

TypeScript 4.1 Beta dostępny z nowymi funkcjami

By Bernadeta Zapała
22 września 2020
165
2
Share:

Sierpień zakończył się wydaniem stabilnej wersji Typescript 4.0. O nowościach zawartych w tym wydaniu pisaliśmy w czerwcu, po wydaniu wersji beta tego języka. Dzisiaj przedstawiamy funkcje zawarte w świeżo opublikowanej wersji TypeScript 4.1 Beta. Nowa wersja posiada wiele nowości, m.in. flagi kontrolne, ulepszenia prędkości oraz aktualizacje produktywności edytora.

Typy literałów szablonów w TypeScript 4.1 Beta

Jedną z najciekawszych funkcji dodaną w TypeScript 4.1 Beta są typy literałów szablonów.

Typy literałów ciągów

Ich głównym celem jest modelowanie funkcji i interfejsów API, oczekujących zestawu określonych ciągów.

Another use of @TypeScript 4.1's template literal types: extracting the URL parameters from an express route. Pretty amazing you can do this in the type system! https://t.co/gfZQy70whg pic.twitter.com/aEyfMwjjqX

— Dan Vanderkam (@danvdk) September 4, 2020

function setVerticalAlignment(color: "top" | "middle" | "bottom") {
    // ...
}

setVerticalAlignment("middel");
//                   ~~~~~~~~
// error: Argument of type '"middel"' is not assignable to
//        parameter of type '"top" | "middle" | "bottom"'.

Jest to całkiem przydatna funkcja, jak widać, typy literałów sprawdzają pisownię wartości ciągu. Oprócz tego programiści otrzymują możliwość używania literałów jako nazw właściwości w typach mapowanych.

type Options = {
    [K in "noImplicitAny" | "strictNullChecks" | "strictFunctionTypes"]?: boolean
};
// same as
//   type Options = {
//       noImplicitAny?: boolean,
//       strictNullChecks?: boolean,
//       strictFunctionTypes?: boolean
//   };

Szablon

Składnia szablonu typu ciągów literału jest taka sama jak w JavaScript, jednak używany w pozycji type. Używając go z konkretnymi typami literałów, przez łączenie zawartości tworzy nowy jego typ.

type World = "world";
type Greeting = `hello ${World}`;
// same as
//   type Greeting = "hello world";

Ciekawą opcją jest także tworzenie wszystkich możliwych literałów ciągu.

type Color = "yellow" | "blue";
type Quantity = "one" | "two";

type SeussFlower = `${Quantity | Color} flower`;
// same as
//   type SeussFlower = "one flower" | "two flower"
//                  | "yellow flower" | "blue flower";

Odwzorowany typ w TypeScript 4.1 Beta

Odwzorowany typ tworzy nowe typy obiektów na podstawie dowolnych kluczy lub kompletnie nowe obiekty oparte na innych typach. Nowa funkcja dodana do TypeScript 4.1 Beta przede wszystkim pozwala na ponowne mapowanie kluczy przy pomocy klauzuli as. W efekcie korzystając z typów literałów szablonów, łatwiej się tworzy nazwy właściwości na podstawie starych.

Rekurencyjne typy warunkowe

TypeScript 4.1 Beta zmniejsza ograniczenia dotyczące typów warunkowych. Dzięki temu mogą one modelować te wzorce. Łatwiejsze teraz będzie pisanie rekurencyjnych aliasów typów, ponieważ typy warunkowe będą się odwoływać do siebie w swoich gałęziach. Przykładowo, chcąc napisać typ, by dostać typy elementów zagnieżdżonych tablic, programista napisze następujący typ deepFlatten.

type ElementType<T> =
    T extends ReadonlyArray<infer U> ? ElementType<U> : T;

function deepFlatten<T extends readonly unknown[]>(x: T): ElementType<T>[] {
    throw "not implemented";
}

// All of these return the type 'number[]':
deepFlatten([1, 2, 3]);
deepFlatten([[1], [2, 3]]);
deepFlatten([[1], [[2]], [[[3]]]]);

Warto jednak pamiętać, że te typy wykonują dużo pracy, więc czas sprawdzania typów może się wydłużyć. Oprócz tego istnieje ryzyko osiągnięcia przez nie wewnętrznego limitu głębokości rekurencji (dla złożonych danych wejściowych). Przez to pojawi się błąd podczas kompilacji.

Nowe flagi kontrolne

Wbudowana funkcja podpisów indeksu sygnalizuje systemowi typów o dostępie użytkowników do właściwości o dowolnych nazwach. Dlatego też wersja beta TS dostarcza nową flagę kontrolną
–noUncheckedIndexedAccess. Dzięki temu każdy dostęp do właściwości lub dostępu indeksowanego uznawany jest za potencjalnie niezdefiniowany. Jednak konsekwencją korzystania z tej flagi jest dokładniejsze sprawdzanie indeksowania w tablicy, także w pętli z kontrolą granic.

Funkcje z React 17 w TypeScript 4.1 Beta

W związku z nowym kandydatem do wydania React 17, do wersji beta TS dodano dwie nowe opcje obsługujące jsx i jsxs:

  • react-jsx – do kompilacji produkcyjnej,
  • react-jsxdev – do kompilacji deweloperskiej.

Podsumowanie

Aby rozpocząć korzystanie z wersji beta, możesz pobrać ją za pośrednictwem NuGet lub skorzystać z npm za pomocą następującego polecenia:

npm install maszynopis @ beta

Źródło: DevBlogs

TagsFrontendTypescriptTypeScript 4.1 Beta

Share:

  • Języki programowania

    Język Go – jako język skryptowy programowania

  • GadżetyInformacjeSystemy i przeglądarki

    Apple Event 2020 – wszystkie nowości i gadżety

  • node.js 15
    Narzędzia

    Node.js 15 wydany z najnowszym V8 i npm

  • 19 stycznia 2021

    GitHub Enterprise Server 3.0 RC – kandydat do wydania

  • 15 stycznia 2021

    TypeScript 4.2 Beta z ulepszeniami typów krotek

  • 13 stycznia 2021

    Styczniowy Patch Tuesday z luką 0-day

  • 11 stycznia 2021

    Safari Technology Preview 118 dostępne dla programistów

  • 8 stycznia 2021

    Microsoft Launcher na Androida z usprawnionym dotykiem

  • 7 stycznia 2021

    WebStorm 2020.3.1 dostępny dla urządzeń z Apple Silicon

  • 22 grudnia 2020

    ReScript 8.4 z przypiętymi zależnościami

  • 14 grudnia 2020

    Edge 88 beta i przeglądarka na kanale Canary dostępne!

  • 9 grudnia 2020

    Chrome 88 Beta z nowościami w WebXR

  • 9 grudnia 2020

    Snowpack 3.0 RC z eksperymentalnymi funkcjami

  • 4 grudnia 2020

    Android Studio Arctic Fox – nowe wydanie narzędzia Google

  • 4 grudnia 2020

    The Hack Summit 2020 – konferencja IT Security

  • 2 grudnia 2020

    PowerToys 0.27 z poprawkami błędów

  • 2 grudnia 2020

    Aleph.js alfa z funkcją importowania map

  • 27 listopada 2020

    Cypress 6.0 zwiększa zakres możliwości obsługi sieci

  • 26 listopada 2020

    Firefox 83 przyspiesza i wprowadza tryb HTTPS-Only

  • 25 listopada 2020

    Electron 11.0 z obsługą Apple Silicon

  • 25 listopada 2020

    Prettier 2.2 z obsługą najnowszego TypeScript 4.1

  • 24 listopada 2020

    Tailwind CSS 2.0 z narzędziami kontroli tekstu

  • 20 listopada 2020

    Angular 11 – stabilne wydanie platformy

  • 19 listopada 2020

    Chakra UI React v1 wydany z ulepszeniami

  • 19 listopada 2020

    Chrome 87 z szybszym startem i zmianami w kartach

  • 18 listopada 2020

    Silnik WebKit w przeglądarce Safari 14

  • 17 listopada 2020

    Poznańska konferencja POZITIVE TECHNOLOGIES 2020 platformą wymiany wiedzy i doświadczeń najlepszych specjalistów IT

  • 16 listopada 2020

    Babylon.js 4.2 z edytorem cząsteczek i Babylon React Native

  • 13 listopada 2020

    Apple Silicon M1 i MacBooki – spotkanie One More Thing

  • 12 listopada 2020

    .NET 5.0 Microsoftu z poprawioną wydajnością

  • 12 listopada 2020

    Windows Terminal 1.5 Preview z nowymi funkcjami

  • 10 listopada 2020

    GIMP 2.99.2 – pierwszy krok do głównej wersji

  • 6 listopada 2020

    iOS 14.2 dostępny z nowymi emotikonami

 

 

Jesteśmy pasjonatami najnowszych technologii w świecie programowania. Zbieramy dla Was informacje i porady z całego świata, które sprawią, że Twoja praca stanie się jeszcze bardziej efektywna.

Obserwuj nas codziennie, aby być na bieżąco oraz śmiało udostępniaj nasze posty.

Zespół DevNews

Kategorie

  • Backend
  • Bez kategorii
  • Frontend
  • Gadżety
  • Informacje
  • Języki programowania
  • Narzędzia
  • QA
  • Systemy i przeglądarki

OBSERWUJ NAS

KONTAKT

Chcesz się z nami skontaktować?

Napisz do nas wiadomość: kontakt@devnews.pl

www.devnews.pl | DEVNEWS 2020 | Newsy i ciekawostki ze świata IT