Помогите поправить реализацию получения значения из LocalStorage
Моя цель сделать функцию, которая будет получать значение из localStorage и при этом иметь значение по умолчанию (если значения не нашло), моя реализация такова:
export function getLocalStorage<T>(key: string, defaultValue: null | any = null): T | null
{
const store: string | null = localStorage.getItem(key);
if (typeof store === "string")
{
return JSON.parse(store);
}
return defaultValue;
}
Я не могу понять, как можно типизировать возвращаемое значение в виде defaultValue.
Если я делаю так:
export function getLocalStorage<T, D = null>(key: string, defaultValue: D = null): T | D
{
const store: string | null = localStorage.getItem(key);
if (typeof store === "string")
{
return JSON.parse(store);
}
return defaultValue;
}
... то получаю ошибку на параметре defaultValue:
Тип "null" не может быть назначен для типа "D".
Возможно создание экземпляра "D" с произвольным типом, который может быть не связан с "null". ts(2322)
Ответы (1 шт):
Автор решения: Sergey Philippenko
→ Ссылка
export function getLocalStorage<T>(key: string, defaultValue: T | null = null): T | null {
const store = localStorage.getItem(key);
if (typeof store === 'string') {
try {
return JSON.parse(store) as T | null;
} catch (e) {
return null;
}
}
return defaultValue;
}