переопределил её, однако у меня IDE всё равно ссылается на WindowLocalStorage из node_modules/typescript/lib/lib.dom.d.ts это специфично для WebStorm или я что то не так делаю?
declarations.d.ts
export enum LocalStorageKeys {
LS_PROPOSALS_VIEW = 'fo-proposals-view-table',
}
type LS<T> = {
getItem(
key: T extends LocalStorageKeys ? LocalStorageKeys : string,
): T extends LocalStorageKeys ? LocalStorageKeys : string;
setItem: (key: string, value: string) => any;
};
declare global {
type Window = {
localStorage<T>({ getItem, setItem }: LS<T>);
}}
index.ts
const value = window.localStorage.getItem<LocalStorageKeys>(
LocalStorageKeys.LS_PROPOSALS_VIEW,
);
а может просто сделать враппер поверх?
не хочется функцию экспортировать. Решил так, но интересно можно ли передеклалировать методы глобала без обёрток const value = (localStorage as LocalStorage< LocalStorageKeys.LS_PROPOSALS_VIEW >).getItem(LocalStorageKeys.LS_PROPOSALS_VIEW);
Явное лучше неявного. Не надо патчить встроенные методы, напиши враппер. Сам себе спасибо скажешь
спасиб, дед
Обсуждают сегодня