确定/访问通用参数的类型?

时间:2019-05-31 14:52:45

标签: typescript

我需要重构一个函数,该函数可以从localStorage中合并值:

export function hydrateFromLocalStorage<T>(key: string): T {
  try {
    return JSON.parse(localStorage.getItem(key))
  }
  catch (error) {
    return null;
  }
}

如果类型T不是对象,则不需要通过JSON解析器进行传递。

我已经看到了许多使用ReturnType的示例,但没有在函数体内使用。是否可以在函数中确定T

2 个答案:

答案 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;
  }
}