Estoy escribiendo una función que devolverá un valor único del objeto por clave o devolverá un objeto vacío si la clave no existe.
Código:
//example data: const obj = { data: {test: 'word'}, str: 'Hi', num: 22, } const pickOne = <T extends object>(obj: T, key: keyof typeof obj) => ((key in obj) ? obj.key : {}) console.log(pickOne(obj, 'data')) //should print {test: 'word'} Mi problema es que recibo este error: Property 'key' does not exist on type 'T' . Soy nuevo en mecanografiar, pero después de leer documentos, estaba seguro de que keyof typeof permitiría cualquier clave en obj .
Cualquier ayuda será apreciada, gracias.
Tu obj tiene 3 claves:
datastrnum Cuando escribes obj.key le estás diciendo al intérprete que busque una clave llamada key , que no existe.
Por otro lado puedes acceder a estas teclas por su nombre usando corchetes:
const key = "data"obj[key] // Should return {test: 'word'} , que es equivalente a:obj["data"] // Should return {test: 'word'}undefinedEjemplo de trabajo:
const obj = { data: {test: 'word'}, str: 'Hi', num: 22, } const key = "data" console.log(obj[key]) console.log(obj["data"]) console.log(obj["key"])Este:
obj.key obtiene la propiedad denominada "key" en obj , que puede no existir.
Donde esto:
obj[key] Obtiene el nombre de la propiedad en la key de variable .
Que funciona sin error de tipo: Ver patio de recreo