#me dice esto ahora
1 messages · Page 1 of 1 (latest)
parece que estas modificando la referencia de particiant que recibes desde el map.
trata de clonarlo, y con el clon reasigna
clonned[item] = ....
No me deja mandar mucho texto(es largo la deficinion de Participant) alguna idea de como enviarlo?
No es eso, el type never suele salir cuando haces alguna operación a nivel tipado que resulta en un type inexistente (por ejemplo string & number
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
ahora lo entiendo, no va a funcionar así porque no todas las propiedades de Participant aceptan un string; en este caso el type del array itemAssets debe cambiar, requieres que sea una unión de las propiedades que vas a manejar ahí
dame un minuto y te doy la solución
dale, gracias
Esto no lo entendi bien:
orque no todas las propiedades de Participant aceptan un string;
te explico
Tu definición del array dice que es un array de strings cuyos valores pueden ser el nombre de cualquiera de las propiedades de Participant, cierto?
y en la línea del error estás asignando un string a participant[item]
pero eso no puede ser, porque item puede ser cualquier propiedad de Participant, por ejemplo challenges, pero challenges no es de tipo string sino de tipo Challenges
no puedes asignarle un string porque (según el tipado como se encuentra ahora) no puedes garantizar que itemAssets contenga solamente los nombres de las propiedades de Participant que aceptan valores del tipo string
no sé si quedó claro
Clarisimo
entonces la solución es decirle a typescript que ese array solamente puede contener nombres de propiedades que aceptan string
o solamente las que se llamen item${number}, desconozco exactamente qué es lo que requieres
prueba tambien cambiando el tipo de itemAssets pero solo con las props que soporten string: ```ts
type Items = keyof Pick<Participant, 'item0' | 'item1' | 'item3'| 'item4'| 'item5' | 'item6'>
const itemAssets: Items[] = [...]
itemAssets.forEach((item) => participant[item] = 'http....' )
Yo haría algo así
const itemAssets: Extract<keyof Participant, `item${number}`>[]
Excelentee
Funciono y entendi el por qué
Yo sabia que no tenia que confiar en chatgpt
Me pasan donde puedo ver este tipo de cosas, me imagino que es mas avanzado
O que tutoriales me recomiendan
btw, muchas gracias a ambos!
Te recomiendo la documentación de TypeScript, y que le eches un ojo al código fuente de esta librería, usan unos trucos bien locos para lograr cosas bien interesantes: https://github.com/sindresorhus/type-fest
https://ivov.dev/notes/typescript-and-set-theory también este post para entender el concepto más fundamental de TypeScript: asignabilidad
How does set theory help to understand type assignability and resolution in TypeScript?
Excelente, les voy a echar un ojo obviamente, muchas gracias y cualquier cosa los vuelvo a molestar
Ya que estoy una duda mas: chatgpt me recomendo agregar esto en Participants
[key: string]: any
y me funcionó, a que se debe esto_
vaya no sabia de ese gracias tambien XD
básicamente por el any, any significa "desactiva TypeScript aquí"
es peligroso, te recomiendo que lo uses solamente cuando comiences a meterte en genéricos muy complejos