A route type can require strings to follow the path shape used by an application.

Typed API Routes

routes.ts
type ApiVersion = "v1" | "v2";
type Resource = "users" | "orders";
type ApiRoute = `/api/${ApiVersion}/${Resource}`;

function describeRoute(route: ApiRoute): string {
    const parts: string[] = route.split("/");
    return `${parts[2]} ${parts[3]}`;
}

const version: ApiVersion = ;
const resource: Resource = "users";
const route: ApiRoute = `/api/${version}/${resource}`;

console.log(describeRoute(route));
type ApiVersion = "v1" | "v2";
type Resource = "users" | "orders";
type ApiRoute = `/api/${ApiVersion}/${Resource}`;

function describeRoute(route: ApiRoute): string {
    const parts: string[] = route.split("/");
    return `${parts[2]} ${parts[3]}`;
}

const version: ApiVersion = ;
const resource: Resource = "users";
const route: ApiRoute = `/api/${version}/${resource}`;

console.log(describeRoute(route));
route type Template literal types can describe valid URL path patterns without accepting every string.