Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
// Mapping over an object type type Mutable<T> = { -readonly [K in keyof T]: T[K]; // remove readonly }; type Required2<T> = { [K in keyof T]-?: T[K]; // remove optional (-) }; // Key remapping with 'as' type Getters<T> = { [K in keyof T as `get${Capitalize<string & K>}`]: () => T[K]; }; interface UserModel { id: number; name: string; email: string } type UserGetters = Getters<UserModel>; // { getId: () => number; getName: () => string; getEmail: () => string } // Filter keys by value type type PickByValue<T, V> = { [K in keyof T as T[K] extends V ? K : never]: T[K]; }; interface Mixed { id: number; name: string; count: number; label: string; } type OnlyStrings = PickByValue<Mixed, string>; // { name: string; label: string } // Deep partial type DeepPartial<T> = { [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K]; }; interface Config { server: { host: string; port: number }; database: { url: string; name: string }; debug: boolean; } const partialConfig: DeepPartial<Config> = { server: { port: 8080 }, // only overriding port };
Result
Open