TypeScript · Senior · Запитання 53 з 75

Як витягти параметри маршруту з рядкового типу шляху?

type Params<P> = P extends `${string}:${infer K}/${infer R}`
  ? K | Params<R>
  : P extends `${string}:${infer K}` ? K : never;
type T = Params<'/users/:id/posts/:postId'>; // 'id' | 'postId'

Пояснення

Роутери на кшталт TanStack Router і типізовані хелпери для Express використовують це, щоб params.id був типобезпечним.

Де почитати

Помилка в запитанні

TypeScript · Senior · запитання 53

Перевірте себе

Пройдіть тест TypeScript · Senior: запитання й варіанти перемішуються, а наприкінці - розбір помилок.

Пройти цей тест