0Pricing
TypeScript Academy · Lekcja

Świeżość i sprawdzanie nadmiarowych właściwości

Poznaj przyczyny, dla których nadmiarowe właściwości wywołują błędy w niektórych kontekstach.

Świeżość i sprawdzanie nadmiarowych właściwości to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 3 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.

Czym jest świeżość

Świeżość to pojęcie w TypeScript, zgodnie z którym literały obiektowe są uznawane za „świeże” w momencie utworzenia. Dla świeżych obiektów wykonywane jest ścisłe sprawdzanie nadmiarowych właściwości, które nie dotyczy obiektów rozszerzonych.

interface Point { x: number; y: number; }
const p: Point = { x: 1, y: 2, z: 3 }; // Error: 'z' not in Point

Sprawdzanie nadmiarowych właściwości w praktyce

Po bezpośrednim przypisaniu literału obiektowego do zmiennej z określonym typem lub przekazaniu go jako argumentu funkcji TypeScript zgłasza dodatkowe właściwości, których nie ma w typie docelowym.

function setPoint(p: { x: number; y: number }) {}
setPoint({ x: 1, y: 2, z: 3 }); // Error: 'z' excess property

Dlaczego istnieje sprawdzanie nadmiarowych właściwości

Wykrywa ono literówki i niezamierzone właściwości w obiektach konfiguracyjnych, które są częstym źródłem błędów w JavaScript.

interface Options { timeout: number; retry?: boolean; }
const opts: Options = { timeout: 3000, retrey: true }; // Error — typo!

Utrata świeżości

Po przypisaniu literału obiektowego do zmiennej pośredniej nie jest on już „świeży”, dlatego sprawdzanie nadmiarowych właściwości nie dotyczy rozszerzonego typu.

const opts = { timeout: 3000, retry: true, extra: "surprise" };
const o: Options = opts; // No error — freshness lost on assignment

Asercje typów omijają świeżość

Użycie asercji typu as również omija sprawdzanie nadmiarowych właściwości, co może ukrywać błędy.

const o = { timeout: 3000, typo: true } as Options; // No error

Sprawdzanie nadmiarowych właściwości z typami przecięcia

Typy przecięcia mogą czasami łagodzić sprawdzanie nadmiarowych właściwości, ponieważ dodatkowe właściwości mogą należeć do jednego z typów tworzących przecięcie.

type A = { x: number };
type B = { y: number };
const ab: A & B = { x: 1, y: 2 }; // OK

Readonly a nadmiarowe właściwości

Sprawdzanie nadmiarowych właściwości dotyczy również typów obiektowych readonly — reguła odnosi się do struktury, a nie do możliwości modyfikacji.

interface Cfg { readonly host: string; }
const c: Cfg = { host: "localhost", port: 3000 }; // Error

Sygnatury indeksów a nadmiarowe właściwości

Dodanie sygnatury indeksu do typu pozwala na dowolne dodatkowe właściwości indeksowane kluczem typu string, skutecznie wyłączając sprawdzanie nadmiarowych właściwości dla tego typu.

interface Flexible { name: string; [key: string]: unknown; }
const f: Flexible = { name: "ts", extra: true }; // OK

Właściwości opcjonalne a świeżość

Właściwości opcjonalne nie łagodzą sprawdzania nadmiarowych właściwości. Właściwość, która w ogóle nie została wymieniona — nawet jako opcjonalna — nadal jest zgłaszana jako nadmiarowa.

interface Shape { color?: string; }
const s: Shape = { color: "red", size: 10 }; // Error: 'size' excess

Praktyczne wzorce

Aby przekazywać dodatkowe właściwości konfiguracji przez interfejs z określonym typem bez błędów, należy użyć zmiennej pośredniej lub sygnatury indeksu w interfejsie.

// Option 1: intermediate variable (freshness lost)
const cfg = { timeout: 3000, debugMode: true };
const o: Options = cfg;
// Option 2: index signature in interface

Podsumowanie: świeżość

Świeżość dotyczy świeżych literałów obiektowych i umożliwia sprawdzanie nadmiarowych właściwości w momencie przypisania. Aby zezwolić na dodatkowe właściwości, należy przypisać obiekt do zmiennej pośredniej lub użyć sygnatury indeksu.

Szybkie sprawdzenie

Kiedy sprawdzanie nadmiarowych właściwości NIE ma zastosowania?

Czego się nauczono

Świeżość i sprawdzanie nadmiarowych właściwości chronią przed literówkami i niezamierzonymi właściwościami w literałach obiektowych. Należy rozumieć, kiedy świeżość zostaje utracona, aby unikać zaskakujących błędów typów lub ukrytych błędów.

Często zadawane pytania

Czy lekcja „Świeżość i sprawdzanie nadmiarowych właściwości” jest bezpłatna?

Tak — pełny tekst „Świeżość i sprawdzanie nadmiarowych 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 „Świeżość i sprawdzanie nadmiarowych właściwości”?

Poznaj przyczyny, dla których nadmiarowe właściwości wywołują błędy w niektórych kontekstach. Ć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 3 z 4.

Ile czasu zajmuje lekcja „Świeżość i sprawdzanie nadmiarowych 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. Mechanizmy rozszerzania i zawężania typów
  2. Typowanie kontekstowe: wnioskowanie z kontekstu
  3. Świeżość i sprawdzanie nadmiarowych właściwości
  4. Asercje const i as const
← Powrót do TypeScript Academy