Typescript Advance Use Cases
Some use cases of how those type helps.
Type value filter
Assume we have a fixed object like this, and we want GET only records
type AppRouteMap = {
"/users/dummyTest": "GET";
"/users/checkAvaiableUser": "POST";
"/files/uploadSignatureTest": "POST";
"/files/uploadDocsTest": "POST";
"/testing/dummyTest": "GET";
}
type OnlyGetRoutes = {
[K in keyof AppRouteMap as AppRouteMap[K] extends "GET" ? K : never]: AppRouteMap[K]
};
// type OnlyGetRoutes = {
// "/users/dummyTest": "GET";
// "/testing/dummyTest": "GET";
// }
export type RoutersPathLessStrictOnlyGet = `${keyof OnlyGetRoutes}${string}`;
// type RoutersPathLessStrictOnlyGet = `/users/dummyTest${string}` | `/testing/dummyTest${string}`This time we keep keys that start with β/files/β:
type FilesOnly = {
[K in keyof AppRouteMap as K extends `/files/${string}` ? K : never]: AppRouteMap[K]
};
// {
// "/files/uploadSignatureTest": "POST";
// "/files/uploadDocsTest": "POST";
// }Last updated on