Итак, я не знаю, возможно ли это в машинописи, но вот что я хочу сделать:
Использовать класс, который получает обобщенный c, для создания запроса GraphQL
class BackendClient<T> {
type: string
endpoint: string
query: Object
constructor(type: string, endpoint: string, query: Object) {
this.type = type
this.endpoint = endpoint
this.query = query
}
async doQuery(): Promise<T> {
var data: string
data = `${this.type} { ${this.endpoint}(`
Object.getOwnPropertyNames(this.query).forEach(element => {
data += `${element}: ${this.query[element]},`
})
data += `) {`
T.parameters.forEach(element => {
data += `${element},`
})
data += `} }`
return await axios({
url: constants.ApiUrl,
method: 'post',
data: {
query: data
}
}) as T
}
}
Так, например, у меня есть код, который делает это
interface Search {
title: string
}
interface Response {
id: number
title: string
image_url: string
}
async function main() {
var search: Search = { title: "a" }
var client = new BackendClient<Response>('query', 'search', search)
console.log(await client.doQuery())
}
main()
Как получить параметры отклика на BackendClient?