0.1.12 (#12)
All checks were successful
continuous-integration/drone/push Build is passing

Co-authored-by: Julien Valverdé <julien.valverde@mailo.com>
Reviewed-on: https://git.jvalver.de/Thilawyn/traitify-ts/pulls/12
This commit was merged in pull request #12.
This commit is contained in:
Julien Valverdé
2024-02-25 03:25:55 +01:00
parent 9d15943c98
commit 1ac7ec5245
4 changed files with 29 additions and 29 deletions

View File

@@ -22,30 +22,30 @@ import { CommonKeys } from "."
// TODO: use OverrideProperties from type-fest?
export type Extend<T extends readonly object[]> = (
T extends [
T extends readonly [
infer Super,
infer Self,
...infer Rest extends object[],
...infer Rest extends readonly object[],
]
? Pick<Self, CommonKeys<Self, Super>> extends Pick<Super, CommonKeys<Self, Super>>
? Extend<[
? Extend<readonly [
Omit<Super, CommonKeys<Self, Super>> & Self,
...Rest,
]>
: never
: T extends [infer Self]
: T extends readonly [infer Self]
? Self
: {}
)
export type Extendable<T extends readonly object[]> = (
T extends [
T extends readonly [
infer Super,
infer Self,
...infer Rest extends object[],
...infer Rest extends readonly object[],
]
? Pick<Self, CommonKeys<Self, Super>> extends Pick<Super, CommonKeys<Self, Super>>
? Extendable<[
? Extendable<readonly [
Omit<Super, CommonKeys<Self, Super>> & Self,
...Rest,
]>
@@ -54,16 +54,16 @@ export type Extendable<T extends readonly object[]> = (
)
export type NonExtendableKeys<T extends readonly object[]> = (
T extends [
T extends readonly [
infer Super extends object,
infer Self extends object,
...infer Rest extends object[],
...infer Rest extends readonly object[],
]
? {[K in keyof Super & keyof Self]: Self[K] extends Super[K]
? never
: K
}[keyof Super & keyof Self]
| NonExtendableKeys<[
| NonExtendableKeys<readonly [
Super & Self,
...Rest,
]>