Size: a a a

TypeScript — русскоговорящее сообщество

2020 March 19

m

mg901 in TypeScript — русскоговорящее сообщество
@Akiyamka привет. Подскажи плиз. Как ты типизируешь или типизировал бы fetch? У нас сейчас вот такая обёртка над ним
type Request = <T>(method: string, url: string, data?: unknown) => Promise<T>;

const request: Request = async (method, url, data) => {
 const h = new Headers();
 h.append('Content-Type', 'application/json');

 const options: RequestInit = {
   method: method.toUpperCase(),
   headers: h,
 };

 if (data) options.body = JSON.stringify(data);

 const res = await fetch(url, options);

 if (res.ok) {
   return res.json();
 }
 throw await res.json();
};
источник

A

Alex CherryTea in TypeScript — русскоговорящее сообщество
mg901
@Akiyamka привет. Подскажи плиз. Как ты типизируешь или типизировал бы fetch? У нас сейчас вот такая обёртка над ним
type Request = <T>(method: string, url: string, data?: unknown) => Promise<T>;

const request: Request = async (method, url, data) => {
 const h = new Headers();
 h.append('Content-Type', 'application/json');

 const options: RequestInit = {
   method: method.toUpperCase(),
   headers: h,
 };

 if (data) options.body = JSON.stringify(data);

 const res = await fetch(url, options);

 if (res.ok) {
   return res.json();
 }
 throw await res.json();
};
Я вроде не спец по TS-у, чтобы советы раздавать)
Ну так на вскидку вижу что не обработали парсинг json-a и код ошибки
источник

J

John in TypeScript — русскоговорящее сообщество
mg901
@Akiyamka привет. Подскажи плиз. Как ты типизируешь или типизировал бы fetch? У нас сейчас вот такая обёртка над ним
type Request = <T>(method: string, url: string, data?: unknown) => Promise<T>;

const request: Request = async (method, url, data) => {
 const h = new Headers();
 h.append('Content-Type', 'application/json');

 const options: RequestInit = {
   method: method.toUpperCase(),
   headers: h,
 };

 if (data) options.body = JSON.stringify(data);

 const res = await fetch(url, options);

 if (res.ok) {
   return res.json();
 }
 throw await res.json();
};
источник

DS

Denis ø Skiba in TypeScript — русскоговорящее сообщество
всегда в проектах одним из первых смотрю как составлена кастомная request функция)
источник

m

mg901 in TypeScript — русскоговорящее сообщество
Denis ø Skiba
всегда в проектах одним из первых смотрю как составлена кастомная request функция)
и что тебе говорит моя request функция?
источник

m

mg901 in TypeScript — русскоговорящее сообщество
я, к своему стыду, так и не понял. Можно ли юзать node-fetch на клиенте?
источник

DS

Denis ø Skiba in TypeScript — русскоговорящее сообщество
что сколько людей столько и мнений на такой счет)
я нечего плохого не имел ввиду
источник

MS

Max Syabro in TypeScript — русскоговорящее сообщество
mg901
я, к своему стыду, так и не понял. Можно ли юзать node-fetch на клиенте?
так это же вроде полифилл для фетч просто
источник

MS

Max Syabro in TypeScript — русскоговорящее сообщество
не?
источник

m

mg901 in TypeScript — русскоговорящее сообщество
хз
источник

A

Alex CherryTea in TypeScript — русскоговорящее сообщество
я обычно паршру ответы бекенда как-то так:

const clone = response.clone()
try {
  const json = await response.json()
} catch (error) {
 const responseRaw = response.text();
 console.debug(${response.url}:  ${responseRaw});
 throw new Error(error);
}
источник

A

Alex CherryTea in TypeScript — русскоговорящее сообщество
и хорошо б проверять statusCode - фетч кидает ошибку только на сетевые ошибки
источник

J

John in TypeScript — русскоговорящее сообщество
mg901
я, к своему стыду, так и не понял. Можно ли юзать node-fetch на клиенте?
это пример, можешь на базе него сделать свой, я не использую fetch, у меня все на rxjs observer обертках
источник

A

Alex CherryTea in TypeScript — русскоговорящее сообщество
есть даже статейки на тему
https://www.carlrippon.com/fetch-with-async-await-and-typescript/
источник

AP

Arnold Pataki in TypeScript — русскоговорящее сообщество
Пацыки, конфигурю сейчас проект. Запускаю tsc —watch и получаю целую гору таких ошибок, что я не так делаю?
источник

AP

Arnold Pataki in TypeScript — русскоговорящее сообщество
все эти ошибки идут из node_modules
источник

NF

Nikita Fedorov in TypeScript — русскоговорящее сообщество
Arnold Pataki
Пацыки, конфигурю сейчас проект. Запускаю tsc —watch и получаю целую гору таких ошибок, что я не так делаю?
"compilerOptions": {
   "lib": ["dom", "dom.iterable", "esnext"],
}
источник

NF

Nikita Fedorov in TypeScript — русскоговорящее сообщество
видимо у тебя lib dom в проекте где нет dom
источник

AP

Arnold Pataki in TypeScript — русскоговорящее сообщество
Nikita Fedorov
"compilerOptions": {
   "lib": ["dom", "dom.iterable", "esnext"],
}
один фиг(
источник

NF

Nikita Fedorov in TypeScript — русскоговорящее сообщество
Arnold Pataki
один фиг(
нет, в смысле этого не должно быть у тебя в конфиге, из-за этой строчки и ломается
источник