This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type Diff< | |
Obj1, | |
Obj2, | |
SameKeys extends keyof Obj1 = keyof Obj1 & keyof Obj2 | |
> = Omit<{ | |
[K in (keyof Obj1 | keyof Obj2)]: | |
K extends keyof Obj1 | |
? Obj1[K] | |
: K extends keyof Obj2 | |
? Obj2[K] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type Reverse<A extends string> = | |
`${A}` extends `${infer H}${infer T}` | |
? `${Reverse<T>}${H}` | |
: A |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 00612 - Medium kebabcase | |
type KebabCase<T extends string> = | |
T extends `${infer F}${infer R}` | |
? R extends Uncapitalize<R> | |
? `${Uncapitalize<F>}${KebabCase<R>}` | |
: `${Uncapitalize<F>}-${KebabCase<R>}` | |
: T | |
export type KebabCaseResult = KebabCase<'FooBarBaz'> //foo-bar-baz |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type PromiseAllType<P> = | |
P extends [] | |
? [] | |
: P extends [Promise<infer T> | infer T, ...infer F] | |
? [T, ...PromiseAllType<F>] | |
: never | |
declare function PromiseAll<P extends any[]>(args: readonly [...P]): Promise<PromiseAllType<P>> | |
const promise1 = Promise.resolve(3); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type User = { | |
id: number, | |
name: string, | |
age: number, | |
active: boolean, | |
} | |
type FilterByType<T, U> = { | |
[K in keyof T]: T[K] extends U ? K : never | |
}[keyof T] |
NewerOlder