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 `UserId` tam, gdzie oczekiwano `OrderId`, skoro oba są zwykłymi tekstami?TypeScript jest strukturalny, więc dwa aliasy `string` to 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 do `keyof any`, czyli do każdego klucza, jaki mógłby istnieć. Ogranicz go zamiast tego do `keyof 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 mi `string[]` zamiast kluczy, które widzę na miejscu?Bo wartość może mieć więcej kluczy, niż deklaruje jej typ, a `Object.keys` zwraca 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