Back to Got

Typescript

documentation/typescript.md

15.0.38.5 KB
Original Source

> Back to homepage

TypeScript

Got is fully written in TypeScript, so the integration is seamless.
Furthermore, types have saved Got from many bugs and inconsistencies.

Wrapping Got in an API client

You can wrap Got in a type-safe API client while preserving all Got features including progress/events support:

typescript
import got, {type RequestPromise, type OptionsOfJSONResponseBody, type Progress} from 'got';

interface FizzBuzz {
	fizz: boolean;
	buzz: boolean;
}

class ExampleAPI {
	private client = got.extend({
		prefixUrl: 'https://api.example.com'
	});

	isFizzBuzz(number: number): RequestPromise<FizzBuzz> {
		return this.client.get('fizzbuzz', {
			searchParams: {number},
			responseType: 'json',
			resolveBodyOnly: true
		}).json<FizzBuzz>();
	}

	// For more complex cases, you can specify options
	getData(id: string, options?: OptionsOfJSONResponseBody): RequestPromise<FizzBuzz> {
		return this.client.get(`data/${id}`, {
			...options,
			responseType: 'json',
			resolveBodyOnly: true
		}).json<FizzBuzz>();
	}
}

const api = new ExampleAPI();

// The promise has full type support
const promise = api.isFizzBuzz(20);

// Event methods are available
promise.on('downloadProgress', (progress: Progress) => {
	console.log(progress.percent);
});

// The result is properly typed
const result = await promise;
console.log(result.fizz); // boolean
console.log(result.buzz); // boolean

Note:

  • Use .json<T>() to get RequestPromise<T> with the body-only response.
  • Use .buffer() or .text() for other response types.
  • Without calling these methods, you'll get RequestPromise<Response<T>>.
  • Use signal and AbortController to abort requests.

Types

Here's a list of types that Got exports:

Note:

  • The list may be incomplete. If you find a type is missing, please open an issue about it.

Got

GotStream

GotRequestFunction

GotPaginate

OptionsWithPagination<T = unknown, R = unknown>

OptionsOfTextResponseBody

OptionsOfJSONResponseBody

OptionsOfBufferResponseBody

OptionsOfUnknownResponseBody

StrictOptions

StreamOptions

OptionsInit

ExtendOptions

PlainResponse

Response<T = unknown>

Request

RequestEvents<T>

Progress

InstanceDefaults

GotReturn

HandlerFunction

RequestPromise<T extends Response | Response['body'] = Response['body']>

Delays

CreateConnectionFunction

CheckServerIdentityFunction

CacheOptions

HttpsOptions

PaginateData<BodyType, ElementType>

PaginationOptions<ElementType, BodyType>

SearchParameters

ResponseType

FilterData<ElementType>

RetryObject

RetryFunction

ParseJsonFunction

StringifyJsonFunction

Method

ToughCookieJar

PromiseCookieJar

DnsLookupIpVersion

RequestFunction

Agents

Headers

Hooks

InitHook

BeforeRequestHook

BeforeRedirectHook

BeforeErrorHook

BeforeRetryHook

AfterResponseHook