Skip to content

Instantly share code, notes, and snippets.

@gorshkov-leonid
Last active August 19, 2025 11:23
Show Gist options
  • Save gorshkov-leonid/574dc3e148e04ab4a2cd43fb8b8e4046 to your computer and use it in GitHub Desktop.
Save gorshkov-leonid/574dc3e148e04ab4a2cd43fb8b8e4046 to your computer and use it in GitHub Desktop.
typescript-tricks.md

Tricks with types

Typesafe Object.keys

Expand
declare global {
    // https://github.com/microsoft/TypeScript/issues/3889
    type ObjectKeys<T> = T extends object
        ? (keyof T)[]
        : T extends number
        ? []
        : T extends Array<any> | string
        ? string[]
        : never;

    interface ObjectConstructor {
        keys<T>(o: T): ObjectKeys<T>;
    }
}


const a: MyType = {
  id: '',  
  name: ''
};
Object.keys(a).forEach((key) => {
    // typeof key = 'id' | 'name'
    console.log(a[key]);
});
See also
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment