Values stored as browser strings can be parsed back into a typed record.

Storage JSON Record

storage.ts
type VisitState = {
    visits: number;
    theme: string;
};

function readState(storage: Record<string, string>): VisitState {
    return JSON.parse(storage.state) as VisitState;
}

const visitCount: number = ;
const storage: Record<string, string> = {
    state: JSON.stringify({
        visits: visitCount,
        theme: "light"
    })
};
const state: VisitState = readState(storage);

console.log(`${state.theme}:${state.visits + 1}`);
type VisitState = {
    visits: number;
    theme: string;
};

function readState(storage: Record<string, string>): VisitState {
    return JSON.parse(storage.state) as VisitState;
}

const visitCount: number = ;
const storage: Record<string, string> = {
    state: JSON.stringify({
        visits: visitCount,
        theme: "light"
    })
};
const state: VisitState = readState(storage);

console.log(`${state.theme}:${state.visits + 1}`);
storage record Storage APIs keep string values, so code usually parses JSON before reading typed fields.