Wzorce
Jedna strona na pytanie. Każdy przepis się kompiluje, każdy wynik to typ wypisany przez kompilator, a każda strona mówi, gdzie przepis zawodzi.
Każdy przepis i każdy wynik są kompilowane podczas budowania

- Jak powstrzymać przekazanie
UserIdtam, gdzie oczekiwanoOrderId, skoro oba są zwykłymi tekstami?TypeScript jest strukturalny, więc dwa aliasystringto ten sam typ. Fantomowa właściwość czyni je różnymi, nie zmieniając wartości.Ostempluj prymityw - Jak dostać błąd kompilacji, gdy ktoś doda przypadek do unii i zapomni go obsłużyć?Zawęź każdy przypadek i przypisz resztę do
never. Gdy unia urośnie, reszta przestaje być niczym i przypisanie zawodzi.Uczyń switch wyczerpującym - Jak powstrzymać
Omit<User, "nmae">przed cichym sukcesem, który nic nie usuwa?Wbudowany ogranicza parametr klucza dokeyof any, czyli do każdego klucza, jaki mógłby istnieć. Ogranicz go zamiast tego dokeyof T.Spraw, by Omit łapał literówki - Jak zamienić
{ a: string } & { b: number }w{ a: string; b: number }, by podpowiedzi były czytelne, a testy równości przechodziły?Homomorficzne mapowanie przechodzi każdy klucz raz i odbudowuje jeden obiekt. Modyfikatory przeżywają; przecięcie nie.Spłaszcz przecięcie - Dlaczego
Object.keys(config)daje mistring[]zamiast kluczy, które widzę na miejscu?Bo wartość może mieć więcej kluczy, niż deklaruje jej typ, aObject.keyszwraca wszystkie. Zawężenie wyniku to świadoma, lokalna decyzja — a nie naprawa usterki.Uzyskaj typowane klucze obiektu - Jak przyjąć obiekt opcji, w którym każde pole jest opcjonalne, ale pusty obiekt jest niedozwolony?Zbuduj po jednym wariancie na klucz, w którym ten klucz jest wymagany, a reszta opcjonalna, i połącz je unią. Każdy pojedynczy podany klucz spełnia co najmniej jeden wariant.Wymagaj co najmniej jednej właściwości
- Jak odczytać
user.address.cityprzez ścieżkę wielokrotnego użytku bez utraty typu wyniku?Wygeneruj rekurencyjnie poprawne krotki kluczy, a potem zużywaj po jednym kluczu, by obliczyć wartość na końcu.Pobierz wartość po typowanej głębokiej ścieżce - Jak utrzymać każdą nazwę zdarzenia w parze z właściwym ładunkiem i nasłuchiwaczem?Użyj mapy zdarzeń i jednego parametru klucza, aby nazwa zdarzenia wybierała typ ładunku w obu metodach.Nadaj typy emiterowi zdarzeń
- Jak sprawić, by dane sukcesu były dostępne tylko w gałęzi sukcesu, a błędy tylko w gałęzi porażki?Nadaj każdemu wariantowi jedno wspólne pole literalne. Jego sprawdzenie zawęża cały obiekt, nie tylko pole.Modeluj stany, które się zawężają
- Jak pozwolić wywołującym wybrać wejście i transformację bez zapisywania argumentów typu?Umieść parametry typu tam, gdzie ujawniają je wartości: jeden w elemencie tablicy, drugi w wyniku callbacku.Wywnioskuj wynik generyczny z callbacku
- Jak przyjąć
hrefalboonClick, ale odrzucić obiekty podające oba?Połącz dwa kształty unią i dodaj unikalne klucze drugiej strony jako opcjonalne właściwościnever.Uczyń dwa kształty propsów wzajemnie wykluczającymi - Jak przyjąć jeden klucz wyszukiwania, odrzucając pustą kwerendę i kwerendę z kilkoma kluczami?Zbuduj wariant dla każdego klucza: wymagaj go i zabroń wszystkich pozostałych przez opcjonalne
never.Wymagaj dokładnie jednej właściwości - Jak uzyskać tylko klucze właściwości będących tekstami, funkcjami albo innym wybranym typem?Mapuj każdy klucz na niego samego albo
never, a potem zindeksuj obiekt, by zebrać ocalałe.Wybierz klucze według typu wartości - Jak zapobiec mutacji poniżej pierwszego poziomu właściwości, zamiast zamrażać tylko zewnętrzny typ obiektu?Zachowaj funkcje, przejdź rekurencyjnie przez tablice i zmapuj każdą właściwość obiektu z modyfikatorem readonly.Uczyń obiekt głęboko tylko do odczytu
- Jak utrzymać literalną unię oraz tablicę lub obiekt używany w czasie działania bez rozjazdu?Zachowaj jedną wartość jako źródło prawdy, utrzymaj literały przez
as const, a potem zapytaj o jej typ.Wyprowadź unię z danych czasu działania - Jak zachować zależność między każdym kluczem i jego wartością podczas iteracji po
Object.entries?Zbuduj unię krotek klucz/wartość przez typ mapowany i zamknij nieuniknioną asercję w jednym pomocniku.Uzyskaj typowane pary z obiektu - Jak sprawić, by pomocnik wywnioskował literalną krotkę bez wymagania od wywołujących
as const?Oznacz parametr typu jakoconst; inferencja wybierze wtedy readonly literalne kształty zamiast poszerzonych tablic i prymitywów.Zachowaj literały generykiem const - Jak przyjąć callback zwracający
TalboPromise<T>i zawsze wystawić jeden przewidywalny wynik?Przyjmij wartość lub obietnicę, oczekaj jej i opisz spłaszczony wynik przezAwaited.Ujednolić callback synchroniczny lub asynchroniczny - Jak wybrać jedną właściwość z każdego obiektu i zachować jej typ w zwracanej tablicy?Zwiąż klucz z
keyof Ti użyj dostępu indeksowanego dla elementu wyniku.Wyciągnij typowaną właściwość z obiektów - Jak indeksować dyskryminowaną unię przez
kind, zamiast wielokrotnie wyciągać składniki?Mapuj po unii i przemapuj każdy składnik na literalną wartość jego dyskryminatora.Zamień unię w mapę odnośników

