así que soy nuevo en TypeScript y necesito su ayuda. Estoy tratando de construir un módulo con mecanografiado que haga llamadas a la API que luego agregaré a mi proyecto principal. así que lo estaba haciendo primero con obtener solicitudes con ajax. Pero tengo esto:
(node:1588) UnhandledPromiseRejectionWarning: TypeError: $.ajax is not a function
Este es mi archivo mecanografiado:
import * as $ from 'jquery' class RedditJuice { afterbeforeStorage:Array<string>; totalPage:number currentPage:number constructor() { this.afterbeforeStorage = [] this.totalPage = 0 this.currentPage = 0 } fetchRedditFeed = async (afterTag:string, beforeTag:string) => { return new Promise<JSON>((resolve, reject) => { console.log("yey") if(afterTag == null || undefined || "" && beforeTag == null || undefined || ""){ var url:string = "https://reddit.com/.json" } else if(beforeTag != null|| undefined || ""){ var url:string = "https://reddit.com/.json?after=" + afterTag } else { var url:string = "https://reddit.com/.json?after=" + afterTag + "?before=" + beforeTag } $.ajax({ url: url, type: "GET", success: function(getData){ console.log(getData.data) resolve(getData.data) }, error: function(err){ reject(err) } }) }) } fetchPostComments = async (permalink:string) => { return new Promise<JSON>((resolve, reject) => { var comment_fetch_url = "https://reddit.com" + permalink + '.json?limit=10' $.ajax({ type: "GET", url: comment_fetch_url, success: function(data) { resolve(data[1].data) }, error: function(err){ reject(err) } }) }) } } const rApi = new RedditJuice() console.log(rApi.fetchRedditFeed("", ""))En la parte inferior del archivo, intento usar la clase, pero aparece el error mencionado... Y sí, estoy ejecutando el archivo .js compilado por tsc. También instalé jQuery con npm (@types/jquery)
Gracias por su apoyo ^____^
¿Está ejecutando esto en un navegador o en nodejs vm, ya sea como prueba o directamente? jquery usa XMLHttpRequest proporcionado por el entorno del navegador para implementar su funcionalidad ajax y cuando no está disponible, no funcionará.