Sobes.tech
Middle

Existem dois endpoints: obter a lista de utilizadores e obter um utilizador por ID. Como organizas a tipagem das respostas e o trabalho com estas APIs?

sobes.tech IA

Resposta da IA

Для типизации ответов от двух endpoint'ов — списка пользователей и пользователя по ID — удобно определить отдельные типы данных, отражающие структуру ответа.

Например, используя TypeScript:

// Тип для одного пользователя
interface User {
  id: string;
  name: string;
  email: string;
  // другие поля
}

// Ответ с одним пользователем
interface UserResponse {
  user: User;
}

// Ответ со списком пользователей
interface UsersListResponse {
  users: User[];
  totalCount: number; // если нужно
}

Для работы с API можно создать функции, которые возвращают промисы с типизированными данными:

async function fetchUserById(id: string): Promise<UserResponse> {
  const response = await fetch(`/api/users/${id}`);
  return response.json();
}

async function fetchUsersList(): Promise<UsersListResponse> {
  const response = await fetch('/api/users');
  return response.json();
}

Такой подход позволяет строго контролировать структуру данных, получать автодополнение и проверку типов в IDE, что снижает количество ошибок и облегчает поддержку кода.