Pola, konstruktory, parameter properties, public, protected, private i #private, readonly, abstract i implements. Sprawdź w macierzy na żywo, kto ma dostęp do każdego członka klasy.
Klasa w TypeScript to klasa JavaScript z typowanymi polami i regułami dostępu. Członkowie public są dostępni wszędzie, protected wewnątrz klasy i jej podklas, a private tylko wewnątrz klasy. Te trzy kontrole istnieją wyłącznie w czasie kompilacji. Pole #name jest prywatne także w uruchomionym JavaScripcie, a readonly blokuje zapis po zakończeniu konstruktora.
Słowa kluczowe klas i ich działanie
Wybierz modyfikator, a macierz pokaże pięć sposobów, w jakie kod może sięgnąć do tego członka, wraz z wynikiem tsc dla każdego z nich. Wiersz z nawiasami kwadratowymi najbardziej zaskakuje: modyfikatory sprawdzane w czasie kompilacji można obejść kluczem tekstowym, a pola z # nie.
private to kontrola TypeScriptu. Znika z wyniku kompilacji, a obj["secret"] nadal się kompiluje i odczytuje wartość. Pole #secret to prywatne pole JavaScriptu: żaden klucz tekstowy do niego nie sięga, a kod spoza klasy nie odczyta go w czasie działania.
To skrót, który deklaruje i przypisuje pole z parametru konstruktora. Zapis constructor(private readonly id: string) {} tworzy prywatne pole id tylko do odczytu bez potrzeby pisania ciała. Prefiksem może być public, protected, private lub readonly.
Nie. implements sprawdza tylko, czy gotowa klasa pasuje do interfejsu. Parametry metod nadal potrzebują własnych adnotacji; pominięcie jednej w trybie strict daje błąd niejawnego any, choć interfejs już podaje jej typ.
strictPropertyInitialization, włączane przez strict, wymaga, aby każde zadeklarowane pole było ustawione w deklaracji lub konstruktorze. Nadaj mu wartość, zrób je opcjonalnym albo dodaj ! po nazwie, jeśli ustawia je coś innego przed użyciem.
Użyj klasy abstrakcyjnej, gdy podklasy mają współdzielić prawdziwy kod, na przykład metodę wywołującą abstrakcyjny hook. Interfejs nie zawiera kodu, a klasa może implementować kilka interfejsów, więc nadaje się do opisywania kształtów.
Konstruktor deklaruje dwa pola na liście parametrów. Pamięć podręczna to pole z #, więc nic spoza klasy nie może jej odczytać ani wyczyścić.
describe to współdzielony kod; area to hook, który musi dostarczyć każdy kształt. Przy włączonym noImplicitOverride słowo override jest wymagane przy area w Circle.
Interfejs pilnuje, aby klasa miała send o właściwym kształcie, ale parametr nadal potrzebuje własnej adnotacji typu.
Bez ograniczeń. Pominięcie modyfikatora oznacza to samo.
W metodach samej klasy Account
W metodzie klasy Savings
Na zewnątrz, przez kropkę
Na zewnątrz, przez klucz tekstowy
Na zewnątrz, przypisując nową wartość
Dostępny dla klasy i jej podklas. Klucz tekstowy nadal omija kontrolę, bo to tylko reguła typów.
W metodach samej klasy Account
W metodzie klasy Savings
Na zewnątrz, przez kropkę
Na zewnątrz, przez klucz tekstowy
Na zewnątrz, przypisując nową wartość
Zamknięty nawet dla podklas, ale tylko podczas sprawdzania typów. Forma z nawiasami się kompiluje, a wartość da się odczytać w czasie działania.
W metodach samej klasy Account
W metodzie klasy Savings
Na zewnątrz, przez kropkę
Na zewnątrz, przez klucz tekstowy
Na zewnątrz, przypisując nową wartość
Prywatne pole JavaScriptu. Żaden klucz tekstowy go nie nazywa, więc każda droga z zewnątrz zawodzi, a silnik wymusza tę samą regułę w czasie działania.
W metodach samej klasy Account
W metodzie klasy Savings
Na zewnątrz, przez kropkę
Na zewnątrz, przez klucz tekstowy
Na zewnątrz, przypisując nową wartość
Każdy może go odczytać; nikt nie może go przypisać po utworzeniu obiektu, nawet metody samej klasy.
W metodach samej klasy Account
W metodzie klasy Savings
Na zewnątrz, przez kropkę
Na zewnątrz, przez klucz tekstowy
Na zewnątrz, przypisując nową wartość
Wybierz modyfikator
Dostęp do członka {v}
Użyty z
Kod
Wynik tsc
Kompiluje się
Zacznij za darmo · Bez karty kredytowej