我需要重构一个函数,该函数可以从localStorage中合并值:
export function hydrateFromLocalStorage<T>(key: string): T {
try {
return JSON.parse(localStorage.getItem(key))
}
catch (error) {
return null;
}
}
如果类型T
不是对象,则不需要通过JSON解析器进行传递。
我已经看到了许多使用ReturnType的示例,但没有在函数体内使用。是否可以在函数中确定T
?
答案 0 :(得分:0)
像往常一样,我想得太多了。
如果您只是尝试使用JSON.stringify()
来设置值,然后再尝试对该值进行重新水化处理,则不必知道泛型参数的返回类型。
答案 1 :(得分:-1)
为什么不仅仅执行常规类型检查?
export function hydrateFromLocalStorage<T>(key: string): T {
try {
const value = localStorage.getItem(key);
if (typeof value === object) {
return JSON.parse(value);
}
return value;
}
catch (error) {
return null;
}
}