0Pricing
TypeScript Academy · Lekcja

Dekoratory metod i właściwości

Dekoruj pojedyncze metody i właściwości.

Dekoratory metod i właściwości to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 2 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.

Wprowadzenie

Ta lekcja dotyczy dekoratorów metod i właściwości w TypeScript.

Wprowadzenie

Dekoratory są propozycją JavaScriptu 3. etapu oraz eksperymentalną funkcją TypeScriptu służącą do dodawania metadanych i modyfikowania klas oraz ich elementów.

Podstawowa koncepcja

Dekorator to funkcja stosowana do klasy, metody, właściwości lub parametru za pomocą składni @.
@sealed
class BugReport {
  type = 'report';
  title: string;
  constructor(t: string) { this.title = t; }
}

Dekorator klasy

Dekoratory klas otrzymują funkcję konstruktora i mogą zwrócić jej zmodyfikowaną wersję.
function sealed(constructor: Function) {
  Object.seal(constructor);
  Object.seal(constructor.prototype);
}

Dekorator metody

Dekoratory metod otrzymują obiekt docelowy, nazwę właściwości i deskryptor właściwości.
function log(target: any, key: string, desc: PropertyDescriptor) {
  const orig = desc.value;
  desc.value = function(...args: any[]) {
    console.log('Calling', key);
    return orig.apply(this, args);
  };
}

Dekorator właściwości

Dekoratory właściwości otrzymują obiekt docelowy i klucz właściwości. Nie mogą bezpośrednio przechwytywać odczytów ani zapisów.
function readonly(target: any, key: string) {
  Object.defineProperty(target, key, { writable: false });
}

Dekorator parametru

Dekoratory parametrów otrzymują obiekt docelowy, nazwę metody i indeks parametru.
function required(target: any, key: string, index: number) {
  const meta = Reflect.getMetadata('required', target, key) || [];
  meta.push(index);
  Reflect.defineMetadata('required', meta, target, key);
}

Fabryki dekoratorów

Fabryka dekoratorów to funkcja, która zwraca dekorator. Przyjmuje parametry konfiguracji.
function role(name: string) {
  return function(target: any, key: string) {
    Reflect.defineMetadata('role', name, target, key);
  };
}

class UserController {
  @role('admin')
  deleteUser() {}
}

Dekoratory NestJS

NestJS szeroko wykorzystuje dekoratory do obsługi kontrolerów, wstrzykiwania zależności i routingu.
@Controller('users')
class UsersController {
  constructor(private usersService: UsersService) {}

  @Get()
  findAll(): User[] {
    return this.usersService.findAll();
  }
}

reflect-metadata

Dekoratory często współpracują z polyfillem reflect-metadata do przechowywania i pobierania metadanych w czasie działania programu.
import 'reflect-metadata';
// Enable in tsconfig: experimentalDecorators: true, emitDecoratorMetadata: true

Kolejność dekoratorów

Wiele dekoratorów zastosowanych do tej samej deklaracji jest przetwarzanych od dołu do góry (ostatni zapisany jest obliczany jako pierwszy).
@first
@second
class Example {}
// Applied: second first, then first

Szybkie sprawdzenie

Jaka konfiguracja TypeScriptu jest wymagana do używania dekoratorów?

Podsumowanie

Dekoratory używają składni @ do modyfikowania klas, metod, właściwości i parametrów. Włącza się je za pomocą experimentalDecorators w tsconfig; są szeroko używane przez frameworki takie jak NestJS i Angular.

Często zadawane pytania

Czy lekcja „Dekoratory metod i właściwości” jest bezpłatna?

Tak — pełny tekst „Dekoratory metod i właściwości” 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 „Dekoratory metod i właściwości”?

Dekoruj pojedyncze metody i właściwości. Ć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 2 z 4.

Ile czasu zajmuje lekcja „Dekoratory metod i właściwości”?

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. Dekoratory klas: opakowywanie zachowania
  2. Dekoratory metod i właściwości
  3. Dekoratory parametrów i metadane
  4. Dekoratory we frameworkach: przykład z NestJS
← Powrót do TypeScript Academy