如何使参数只有在没有提供泛型的情况下才有条件?
type Params<T> = T extends Record<string, string> ? T : never;
export const getPath =
<T>(path: string) =>
(params: Params<T>) => {
const lang = getCurrentLang();
return generatePath(path, { lang, ...(params ?? {}) });
};
例如:
const login = getPath("/:lang/login")
login() // should works without types error
const book = getPath<{ id: string }>("/:lang/books/:id")
book() // error
book({ id: "1" }) // works