Perilaku yang Diharapkan
Tidak ada kesalahan saat mengkompilasi Jenis yang Diketik Pasti untuk apollo-upload-client :
import { ApolloLink } from "apollo-link";
import { HttpOptions } from "apollo-link-http-common";
export { ReactNativeFile } from "extract-files";
export function createUploadLink(linkOptions?: HttpOptions): ApolloLink;
Perilaku Sebenarnya
Kesalahan dalam jenis apollo-link-http-common, yang merujuk ke GlobalFetch
. GlobalFetch akan dihapus di TypeScript 3.6 mendukung WindowOrWebWorker, yang memiliki metode fetch
yang sama :
export interface HttpOptions {
// ........
/**
* A `fetch`-compatible API to use when making requests.
*/
fetch?: GlobalFetch['fetch'];
// .........
}
Reproduksi _sederhana_
npm install -g typescript<strong i="21">@next</strong>
cd packages/apollo-link-http-common/src
tsc
Memberikan kesalahan:
index.ts:74:11 - error TS2304: Cannot find name 'GlobalFetch'.
74 fetch?: GlobalFetch['fetch'];
~~~~~~~~~~~
index.ts:174:39 - error TS2304: Cannot find name 'GlobalFetch'.
174 export const checkFetcher = (fetcher: GlobalFetch['fetch']) => {
(Ini bukan cara yang tepat untuk membuat file ini, jadi ada 4 kesalahan lainnya. Anda hanya akan melihat 4 kesalahan itu jika Anda menggunakan typescript@latest
)
Cara mengatasinya adalah mengganti GlobalFetch
dengan WindowOrWorkerGlobalScope
. Saya akan memasang PR yang melakukan ini segera.
@sandersn @benjamn saat menginstal apollo-boost di server node, kami masih mendapatkan masalah ini. Masalahnya tampaknya ada pada file deklarasi
node_modules/apollo-boost/lib/index.d.ts:25:13 - error TS2304: Cannot find name 'GlobalFetch'.
25 fetch?: GlobalFetch['fetch'];
~~~~~~~~~~~
mungkin apollo-boost perlu diperbarui juga?
@eturino PR baru tentang ini: https://github.com/apollographql/apollo-client/pull/5367
Saya menambahkan ke src/shims-tsx.d.ts saya ini untuk menghilangkan peringatan ini
declare type GlobalFetch {
fetch(input: RequestInfo, init?: RequestInit): Promise<Response>;
};
Komentar yang paling membantu
@sandersn @benjamn saat menginstal apollo-boost di server node, kami masih mendapatkan masalah ini. Masalahnya tampaknya ada pada file deklarasi
mungkin apollo-boost perlu diperbarui juga?