@k1eu/typed-request
v0.9.0
Published
A typed version of Request, Response and Fetch
Downloads
68
Maintainers
Readme
typed-request
typed-request
is a utility library for working with Request,Responses and Fetches in Typescript.
In a nutshell, Typed Request allows you to:
- Fetch data from the server with strongly typed JSON responses with
tf
function - Create TypedRequest and TypedResponse instances
- It is a drop-in replacement for Request and Response types
Installation
npm install @k1eu/typed-request
yarn add @k1eu/typed-request
pnpm add @k1eu/typed-request
bun add @k1eu/typed-request
Overview
Package can help you both on Frontend and Backend side of the application.
It provides tf
function which is a drop in replacement for fetch but provides generic typing for the response.
For the headers it uses SuperHeaders which provides a typed API for the headers.
tf
typed fetch function:
import { tf } from "@k1eu/typed-request";
type ResponseData = {
data: {
resourceId: string;
title: string;
};
};
export const handler = async (req: Request) => {
const response = await tf<ResponseData>("https://example.com/api/resource", {
headers: {
contentType: "application/json",
},
}); // Typed with TypedResponse<ResponseData>
const json = await response.json(); // Typed with ResponseData
console.log(json.data.title); // ✅
console.log(json.data.description); // ❌
};
TypedResponse and TypedRequest:
const Request = new TypedRequest<{
data: {
resourceId: string;
title: string;
};
}>("https://example.com");
const Response = new TypedResponse<{
data: {
resourceId: string;
title: string;
};
}>();
const response = await Request.json(); // Typed with { data: { resourceId: string; title: string; } }
const json = await Response.json(); // Typed with { data: { resourceId: string; title: string; } }
License
See LICENSE