TypeScript Academy · Lekcja

TypeScript 5.0: standard dekoratorów i parametry typów const

Używaj nowej propozycji dekoratorów i generycznych parametrów const.

Lekcja 1 z 413 kroki

TypeScript 5.0: standard dekoratorów i parametry typów const to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej TypeScript Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs TypeScript Academy zawiera 4 lekcji w sumie.

Przegląd TypeScript 5.0

TypeScript 5.0 wprowadził ustandaryzowaną propozycję dekoratorów TC39 (etap 3), parametry typów const, nową dosłowną składnię modułów oraz znaczące usprawnienia wydajności.

// TS 5.0 release: March 2023
// npm install typescript@5

Dekoratory etapu 3

TS 5.0 implementuje oficjalną propozycję dekoratorów TC39 etapu 3 — inną niż starsze eksperymentalne dekoratory. Nie trzeba już używać experimentalDecorators: true.

// New standard decorator — no experimentalDecorators flag needed
function logged(target: Function, ctx: ClassDecoratorContext) {
  return class extends (target as any) {
    constructor(...args: any[]) {
      console.log("Creating", target.name);
      super(...args);
    }
  };
}

@logged
class User { constructor(public name: string) {} }

Obiekt kontekstu dekoratora

Nowe dekoratory otrzymują obiekt ClassDecoratorContext lub MethodDecoratorContext z typami i metadanymi dotyczącymi dekorowanego elementu.

function sealed(_: Function, ctx: ClassDecoratorContext) {
  ctx.addInitializer(function(this: any) {
    Object.seal(this);
  });
}

Dekoratory metod w TS 5.0

Dekoratory metod otrzymują metodę i obiekt ClassMethodDecoratorContext, zastępując stary podpis (target, key, descriptor).

function measure(_: Function, ctx: ClassMethodDecoratorContext) {
  return function(this: any, ...args: any[]) {
    const start = performance.now();
    const result = (_.apply as any)(this, args);
    console.log(ctx.name, performance.now() - start, "ms");
    return result;
  };
}

Parametry typów const

const przy parametrze typu sprawia, że TypeScript wywnioskuje dla argumentów typy literałowe zamiast rozszerzać je do typu bazowego.

function identity<const T>(val: T): T { return val; }
const a = identity("hello");      // type: "hello" (not string)
const b = identity([1, 2, 3]);    // type: readonly [1, 2, 3]

Generyki const a as const

Parametry typów const automatycznie zapewniają efekt zawężenia — wywołujący nie muszą dodawać as const przy każdym miejscu wywołania.

// Without const param: callers need as const
function makeRoute<T extends string>(path: T) { return path; }
const r1 = makeRoute("/home" as const); // "/home"

// With const param: automatic
function makeRoute2<const T extends string>(path: T) { return path; }
const r2 = makeRoute2("/home"); // "/home" — no as const needed

Rozwiązywanie modułów przez bundler

TS 5.0 dodał moduleResolution: "bundler" dla projektów używających Vite, esbuild lub podobnych bundlerów, które samodzielnie obsługują rozwiązywanie modułów.

{
  "compilerOptions": {
    "module": "ESNext",
    "moduleResolution": "bundler"
  }
}

verbatimModuleSyntax

verbatimModuleSyntax: true wymusza używanie import type w importach dotyczących wyłącznie typów, zapobiegając wyciekaniu importów do środowiska wykonawczego.

// tsconfig.json
{ "compilerOptions": { "verbatimModuleSyntax": true } }

// Now this errors: must be import type
import { User } from "./types"; // Error if User is only a type
import type { User } from "./types"; // OK

Usprawnienia wydajności

TS 5.0 poprawił buforowanie tworzenia instancji typów i wydajność zawężania typów, dzięki czemu duże projekty działają szybciej bez zmian w kodzie.

# TS 5.0 compile benchmarks: ~10-15% faster on large projects

Migracja ze starszych dekoratorów

Starsze dekoratory experimentalDecorators nadal działają, ale w przyszłości zostaną wycofane. Należy przejść na dekoratory TC39, aby zachować zgodność z przyszłymi wersjami.

// Legacy: requires experimentalDecorators: true
@Component({ selector: "app-root" })
class AppComponent {}

// New TC39 decorator: no flag needed (but Angular/NestJS need updates)

Podsumowanie: TypeScript 5.0

TypeScript 5.0 wprowadził standardowe dekoratory TC39, parametry typów const zapewniające automatyczne wnioskowanie typów literałowych, moduleResolution: "bundler", verbatimModuleSyntax oraz znaczący wzrost wydajności.

Szybkie sprawdzenie

Co robi const przy parametrze typu?

Czego się Państwo nauczyli

TypeScript 5.0: standardowe dekoratory TC39 zastępują eksperymentalne, parametry typów const automatycznie zawężają argumenty do typów literałowych, moduleResolution: "bundler" obsługuje nowoczesne narzędzia budowania, a verbatimModuleSyntax wymusza używanie import type.

Bezpłatny start

Ucz się TypeScript dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
101
Lekcje
352

Często zadawane pytania

Czy lekcja „TypeScript 5.0: standard dekoratorów i parametry typów const” jest bezpłatna?

Tak — pełny tekst „TypeScript 5.0: standard dekoratorów i parametry typów const” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu TypeScript Academy, przejdź na CoddyKit PRO. Kurs TypeScript Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „TypeScript 5.0: standard dekoratorów i parametry typów const”?

Używaj nowej propozycji dekoratorów i generycznych parametrów const. Ćwiczysz TypeScript Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć TypeScript Academy?

Nie wymagamy żadnego doświadczenia. TypeScript Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „TypeScript 5.0: standard dekoratorów i parametry typów const”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji TypeScript Academy?

Tak. Każda lekcja TypeScript Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. TypeScript 5.0: standard dekoratorów i parametry typów const
  2. TypeScript 5.1–5.2: ulepszone wnioskowanie
  3. TypeScript 5.3–5.4: nowe zawężanie i NoInfer
  4. TypeScript 5.5+: izolowane deklaracje i dalsze zmiany
← Powrót do TypeScript Academy