@telegram-apps/toolkit
Version:
Internal toolkit used in the @telegram-apps packages.
8 lines (7 loc) • 372 B
TypeScript
export type UnionStringKeys<U> = U extends U ? {
[K in keyof U]-?: U[K] extends string | undefined ? K : never;
}[keyof U] : never;
export type UnionRequiredKeys<U> = U extends U ? {
[K in UnionStringKeys<U>]: ({} extends Pick<U, K> ? never : K);
}[UnionStringKeys<U>] : never;
export type UnionOptionalKeys<U> = Exclude<UnionStringKeys<U>, UnionRequiredKeys<U>>;