Files
NapCatQQ/.pnpm-store/v3/files/00/6b8801f5ea31058bf2faae544c1b9a90503fec41e18ce09c79cbf0bd7feb1fdc3450c1fd2f08d4613ccce089c04bc1c8a7285495305377f2f9b343c7348f42
T
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

51 lines
1.4 KiB
Plaintext

export type Id<T> = { [K in keyof T]: T[K] } & {}
export type WithRequiredProp<T, K extends keyof T> = Omit<T, K> &
Required<Pick<T, K>>
export type Override<T1, T2> = T2 extends any ? Omit<T1, keyof T2> & T2 : never
export function assertCast<T>(v: any): asserts v is T {}
export function safeAssign<T extends object>(
target: T,
...args: Array<Partial<NoInfer<T>>>
): T {
return Object.assign(target, ...args)
}
/**
* Convert a Union type `(A|B)` to an intersection type `(A&B)`
*/
export type UnionToIntersection<U> = (
U extends any ? (k: U) => void : never
) extends (k: infer I) => void
? I
: never
export type NonOptionalKeys<T> = {
[K in keyof T]-?: undefined extends T[K] ? never : K
}[keyof T]
export type HasRequiredProps<T, True, False> =
NonOptionalKeys<T> extends never ? False : True
export type OptionalIfAllPropsOptional<T> = HasRequiredProps<T, T, T | never>
export type NoInfer<T> = [T][T extends any ? 0 : never]
export type NonUndefined<T> = T extends undefined ? never : T
export type UnwrapPromise<T> = T extends PromiseLike<infer V> ? V : T
export type MaybePromise<T> = T | PromiseLike<T>
export type OmitFromUnion<T, K extends keyof T> = T extends any
? Omit<T, K>
: never
export type IsAny<T, True, False = never> = true | false extends (
T extends never ? true : false
)
? True
: False
export type CastAny<T, CastTo> = IsAny<T, CastTo, T>