la solución de esta pregunta ya está disponible en stackoverflow pero, todavía estoy confundido, tengo el mismo uso que ellos responden, sigue este error, ayúdame a salir de este error, gracias, mi lista de objetos es
const typeValue = [ {name: "Subscription", value: "subscription", rank: 2}, {name: "Single", value: "single", rank: 3}, {name: "Trial", value: "trial", rank: 0}, {name: "Unlimited", value: "unlimited", rank: 1000}, {name: "Promo", value: "promo", rank: 1}, {name: "Test", value: "test", rank: 0}, {name: "Brand", value: "brand", rank: 3} ]cualquier quiero encontrar número de rango
rank: typeValue.find(x => x.value === snapshot.data().type).rankfind devolverá undefined si no puede encontrar una coincidencia, y entonces es ilegal llamar a .rank . Para resolver, use ?.rank en su lugar:
rank: typeValue.find(x => x.value === snapshot.data().type)?.rank Si el problema persiste, es posible que deba hacer lo mismo para .type :
rank: typeValue.find(x => x.value === snapshot.data()?.type)?.ranktypeValue.find(x => x.value === snapshot.data().type) Está tratando de encontrar un elemento en typeValue que satisfaga x.value === snapshot.data().type , pero snapshot.data().type podría ser cualquier cosa, por lo que TypeScript advierte que typeValue.find(x => x.value === snapshot.data().type) puede devolver undefined .
Si desea decirle a TypeScript que x.value === snapshot.data().type definitivamente coincidirá con uno de los elementos, puede usar ! :
rank: typeValue.find(x => x.value === snapshot.data().type)!.rank También puedes usar ? si el rank puede ser undefined :
rank: typeValue.find(x => x.value === snapshot.data().type)?.ranktypeValue : - const typeValue: { name: string; value: string; rank: number }[] = [ { name: "Subscription", value: "subscription", rank: 2 }, { name: "Single", value: "single", rank: 3 }, { name: "Trial", value: "trial", rank: 0 }, { name: "Unlimited", value: "unlimited", rank: 1000 }, { name: "Promo", value: "promo", rank: 1 }, { name: "Test", value: "test", rank: 0 }, { name: "Brand", value: "brand", rank: 3 }, ];snapshot.data().type , si aún no lo declaró!