Estoy tratando de devolver datos en una variedad de objetos... He hecho esto antes con JS, pero fue un desastre, estaba buscando un enfoque más limpio y aprendiendo lentamente TS pero parece que me he topado con una pared... .
export {}; const cheerio = require("cheerio"); const fetch = require("isomorphic-fetch"); interface PlayerStats { name: string; role: string; score: string; matches: string; totalBattles: number; } const fetchData = async (faction: string) => { const req = await fetch("https://localhost/3000/" + faction); const data: string = await req.text(); const $ = cheerio.load(data); const SquadElements: Element[] = $("#teamDetails > div.memberList").toArray(); const playerStats: PlayerStats[] = SquadElements.map((el: Element) => { const name: string = $(el).find(".member .name p").text() || ""; const score: string = $(el).find(".member .stats .battlesWon").text(); const matches: string = $(el).find(".member .stats .matchesPlayed").text(); const role: string = $(el).find(".member .specialty h6").text(); const totalBattles: number = parseInt(matches) * 3; return { name, score, matches, role, totalBattles }; }); console.log(playerStats[0]); return playerStats; }; fetchData("9a7059e278"); console.log(playerStats[0]); devuelve name: 'name1name2name3name4name5'.. etc
Gracias @Thomas por la ayuda... Fue tan simple como:
$("#teamDetails > div.memberList > .member").toArray();
en vez de:
$("#teamDetails > div.memberList").toArray();