• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1
2type AMappedType<T> = { [KeyType in keyof T]: number };
3
4type HasM = {
5  m: number;
6};
7
8// Simplified repro from #48059
9
10interface X1<
11  T extends HasM,
12  Output = AMappedType<{ s: number; } & { [k in keyof T]: number; }>
13> {
14  tee: T;
15  output: Output;
16}
17
18type F1<T> = T extends X1<infer U> ? U : never;
19
20// With default inlined
21
22interface X2<
23  T extends HasM,
24  Output
25> {
26  tee: T;
27  output: Output;
28}
29
30type F2<T> = T extends X2<infer U, AMappedType<{ s: number; } & { [k in keyof (infer U)]: number; }>> ? U : never;
31
32// Original repro
33
34type Simplify<T> = {[KeyType in keyof T]: T[KeyType]};
35
36type optionalKeys<T extends object> = {
37    [k in keyof T]: undefined extends T[k] ? k : never;
38}[keyof T];
39
40type requiredKeys<T extends object> = Exclude<keyof T, optionalKeys<T>>;
41
42export type addQuestionMarks<T extends object> = {
43    [k in optionalKeys<T>]?: T[k];
44} & {
45    [k in requiredKeys<T>]: T[k];
46};
47
48type ZodRawShape = {
49    [k: string]: ZodType<any>;
50};
51
52interface ZodType<Output> {
53  _type: Output;
54}
55
56interface ZodObject<
57  T extends ZodRawShape,
58  Output = Simplify<
59    {
60      [k in optionalKeys<T>]?: T[k];
61    } & {
62      [k in requiredKeys<T>]: T[k];
63    }
64  >
65> extends ZodType<Output> {
66  readonly _shape: T;
67}
68
69type MyObject<T> = T extends ZodObject<infer U>
70  ? U extends ZodRawShape
71    ? U
72    : never
73  : never;
74
75// Repro from #50479
76
77type Cell<Value extends BaseValue = any, BaseValue = unknown> = {
78  id: string
79}
80
81type Items<Type extends Cell = Cell> = {
82  type: Type
83  name: string
84}
85
86type InferIOItemToJSType<T extends Items> =
87  T extends { type: infer U }
88    ? U extends Cell<infer V/**, infer _ or unknown, or any valid type **/>
89      ? V
90      : never
91    : never
92