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的运行时是不可能的

0
0

React17+Hook+TS4 优质实践,仿 Jira 企业级项目

解锁 React17 高阶用法,轻松应对大型复杂长周期项目

2691 学习 · 1236 问题

查看课程