ts 反射
来源:8-7 完成URL状态管理与JS中的 iterator讲解

慕先生0492071
2022-04-04
请问如何实现 将ts的类型当参数传入方法中?如下的代码中的参数,类似于java中传入T.class
export const useUrlParams = async <T extends Record<string, unknown>> (T.class) => {
const [searchParams, setSearchParams] = useSearchParams();
// ******** 伪代码,通过T.class获取到T的所有Keys
const keys = .........;
// ********
const urlParams = useMemo(() => (
keys.reduce((previousValue, key) => ({
...previousValue, [key]: searchParams.get(key as string) || ''
}), {} as T)
), [searchParams]);
const setUrlParams = useMemo(() => (newParams: T) => {
const o = cleanObject({
...Object.fromEntries(searchParams),
...newParams,
}) as URLSearchParamsInit;
return setSearchParams(o);
}, [searchParams, setSearchParams]);
return [urlParams, setUrlParams] as const;
}
写回答
1回答
-
Nolan
2022-04-06
把ts的类型传入js的运行时是不可能的
00
相似问题