Skip to content

Instantly share code, notes, and snippets.

View T99's full-sized avatar
:shipit:
programmin'

Trevor Sears T99

:shipit:
programmin'
View GitHub Profile
@T99
T99 / merged-union-type.ts
Last active February 25, 2020 18:20
A TypeScript type used to union together the keys of two or more objects.
type InternalMergedUnionType<T0 extends {}, T1 extends {}> = {
[K in keyof (T0 & T1)]: K extends keyof T0 ?
(K extends keyof T1 ?
T0[K] | T1[K] :
T0[K]) :
(K extends keyof T1 ?
T1[K] :
never);
@T99
T99 / indicies.ts
Last active February 25, 2020 21:27
TypeScript type for extracting indicies out of indexable types.
export type KnownKeys<T> = {
[K in keyof T]: string extends K ? never : number extends K ? never : K
} extends { [_ in keyof T]: infer U } ? U : never;
export type IfAny<T, Y, N> = 0 extends (1 & T) ? Y : N;
type Indicies<T> = IfAny<T, string, keyof T & KnownKeys<T>>;

Keybase proof

I hereby claim:

  • I am T99 on github.
  • I am t99 (https://keybase.io/t99) on keybase.
  • I have a public key whose fingerprint is DA6E E4C3 621D 5C03 BCDB 132D 7F82 5F45 2C2B CF5F

To claim this, I am signing this object: