Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

97
Vistas
¿Es posible crear un contenedor de almacenamiento local con parámetros escritos en TypeScript y valores de retorno asignados?

Estoy tratando de construir un contenedor TS para localStorage con un esquema TS que define todos los valores posibles en localStorage. El problema es que no puedo averiguar cómo escribir el valor de retorno para que se asigne al tipo apropiado del esquema: por ejemplo, si quiero llamar a LocalStorage.get ("algún_número"), quiero que el tipo de retorno sea de número de tipo. ¿Es esto posible en TS?

¡El valor del parámetro escrito por teclas funciona muy bien para la entrada!

type Values = LocalStorageSchema[Keys] devuelve el tipo de unión de los valores que no es lo que estoy buscando.

Además, parece que no es posible usar la tecla variable en la función de obtención para reducir el tipo...

También he investigado los tipos genéricos: LocalStorage.get(...) pero creo que eso anula todo el punto de escribir el valor de retorno.

¿Alguien tiene ideas para esto? ¡Gracias!

 type LocalStorageSchema = { token: string; some_string: string; some_number: number; }; type Keys = keyof LocalStorageSchema; // type Values = LocalStorageSchema[Keys]; ??? export const LocalStorage = { get(key: Keys): any { const data = window.localStorage.getItem(key); //type ReturnType = ??? if (data !== null) { return data; } console.error(`localStorage missing object with key ${key}`); return null; }, set(key: Keys, value: any) { window.localStorage.setItem(key, value); }, remove(key: Keys) { window.localStorage.removeItem(key); }, clear() { window.localStorage.clear(); }, };
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puede usar genérico como en este enlace . Todavía quedan algunos errores por corregir. Enlace sobre cómo manejar valores nulos. Depende de ti, así que no lo arreglé.

about 4 years ago · Juan Pablo Isaza Denunciar

0

¡Utilice genéricos para devolver el tipo correcto para la clave!

 type LocalStorageSchema = { token: string; some_string: string; some_number: number; }; type Keys = keyof LocalStorageSchema; export const LocalStorage = { get<T extends Keys>(key: T): LocalStorageSchema[T] | null { // Return type will depend on the key const data = window.localStorage.getItem(key); //type ReturnType = ??? if (data !== null) { return data as LocalStorageSchema[T]; } console.error(`localStorage missing object with key ${key}`); return null; }, set<T extends Keys>(key: T, value: LocalStorageSchema[T]) { window.localStorage.setItem(key, value as any); }, remove(key: Keys) { window.localStorage.removeItem(key); }, clear() { window.localStorage.clear(); }, }; const a = LocalStorage.get('token'); // string | null

Patio de juegos

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda