[next] Fix lookup and recursive types (#2472)

* fix: bug in lookup not checking object properly before accessing

* fix: Recursive types not handling optional arrays
This commit is contained in:
Vinh
2019-08-15 01:07:49 +07:00
committed by GitHub
parent c37ee12e57
commit 635e740fc0
3 changed files with 11 additions and 11 deletions
@@ -36,7 +36,7 @@ const createProxy = <T = any>(
return prop in recordSource;
},
get(_, prop) {
if (prop in recordSource && (recordSource as any)[prop].__ref) {
if ((recordSource as any)[prop] && (recordSource as any)[prop].__ref) {
return lookup(environment, (recordSource as any)[prop].__ref);
}
return (recordSource as any)[prop];
@@ -8,16 +8,16 @@ import { DeepPartial } from "coral-framework/types";
export type Callbackify<T> = T extends object
?
| {
[P in keyof T]: T[P] extends Array<infer U>
[P in keyof T]: T[P] extends (Array<infer U> | undefined)
? Array<Callbackify<U>>
: T[P] extends ReadonlyArray<infer V>
: T[P] extends (ReadonlyArray<infer V> | undefined)
? ReadonlyArray<Callbackify<V>>
: Callbackify<T[P]>
}
| (() => {
[P in keyof T]: T[P] extends Array<infer U>
[P in keyof T]: T[P] extends (Array<infer U> | undefined)
? Array<Callbackify<U>>
: T[P] extends ReadonlyArray<infer V>
: T[P] extends (ReadonlyArray<infer V> | undefined)
? ReadonlyArray<Callbackify<V>>
: Callbackify<T[P]>
})
@@ -28,9 +28,9 @@ export type Callbackify<T> = T extends object
*/
export type WithTypename<T> = T extends object
? {
[P in keyof T]: T[P] extends Array<infer U>
[P in keyof T]: T[P] extends (Array<infer U> | undefined)
? Array<WithTypename<U>>
: T[P] extends ReadonlyArray<infer V>
: T[P] extends (ReadonlyArray<infer V> | undefined)
? ReadonlyArray<WithTypename<V>>
: WithTypename<T[P]>
} & { __typename?: string }
+4 -4
View File
@@ -24,9 +24,9 @@ export type Nullable<T> = { [P in keyof T]: T[P] | null };
export type DeepNullable<T> = T extends object
? {
[P in keyof T]: T[P] extends Array<infer U>
[P in keyof T]: T[P] extends (Array<infer U> | undefined)
? Array<DeepNullable<U>>
: T[P] extends ReadonlyArray<infer V>
: T[P] extends (ReadonlyArray<infer V> | undefined)
? ReadonlyArray<DeepNullable<V>>
: DeepNullable<T[P]>
}
@@ -37,9 +37,9 @@ export type DeepNullable<T> = T extends object
*/
export type DeepPartial<T> = T extends object
? {
[P in keyof T]?: T[P] extends Array<infer U>
[P in keyof T]?: T[P] extends (Array<infer U> | undefined)
? Array<DeepPartial<U>>
: T[P] extends ReadonlyArray<infer V>
: T[P] extends (ReadonlyArray<infer V> | undefined)
? ReadonlyArray<DeepPartial<V>>
: DeepPartial<T[P]>
}