Type-safe klienci API bez codegen

Przestań używać as User dla odpowiedzi API.

Rzutowanie as User to kłamstwo, które mówisz swojemu kompilatorowi. TypeScript myśli, że dane są poprawne. W czasie runtime dane są często błędne. Błędy ujawniają się trzy funkcje później. Stack trace nie pomaga.

Sieć to miejsce, w którym nie ufasz niczemu. Weryfikuj dane na granicy.

Użyj Zod. Zdefiniuj schemat raz. Zod daje Ci typ i walidację. Twoje typy nie będą się rozjeżdżać.

Zbuduj prosty wrapper dla fetch. Przekaż do niego schemat. Użyj safeParse, aby sprawdzić body. Dane stają się typem dopiero po walidacji.

Nie rzucaj błędów. Zwracaj obiekt Result. Użyj unii z ok: true lub ok: false. To wymusza obsługę błędów.

Zastosuj tę samą logikę do swoich adresów URL. Stwórz schemat dla parametrów zapytania. Zapobiegaj literówkom, zanim żądanie zostanie wysłane.

Użyj Zod, gdy:

  • Masz mało endpointów.
  • Nie masz specyfikacji OpenAPI.
  • Chcesz bezpieczeństwa w czasie runtime.

Użyj codegen, gdy:

  • Masz setki endpointów.
  • Masz idealną specyfikację.

Rzutowanie to nie jest walidacja. Traktuj as User jako code smell w pobliżu fetch.

Parsuj na granicy. Ufaj wewnątrz.

Źródło: https://dev.to/pavelespitia/type-safe-api-clients-in-typescript-without-a-code-generator-1k32