Skip to content

Commit c90fb20

Browse files
committed
instantiate aggregate inference
1 parent 46e280b commit c90fb20

8 files changed

+662
-5
lines changed

src/compiler/checker.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20567,7 +20567,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2056720567
}
2056820568

2056920569
/**
20570-
* Maps forward-references to later types parameters to the empty object type.
20570+
* Maps forward-references to later types parameters to the unknown type.
2057120571
* This is used during inference when instantiating type parameter defaults.
2057220572
*/
2057320573
function createBackreferenceMapper(context: InferenceContext, index: number): TypeMapper {
@@ -27603,7 +27603,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2760327603
}
2760427604
}
2760527605
}
27606-
inferredType = aggregateInference;
27606+
const recordSymbol = getGlobalRecordSymbol();
27607+
const selfReference = recordSymbol ? getTypeAliasInstantiation(recordSymbol, [stringNumberSymbolType, unknownType]) : unknownType;
27608+
inferredType = instantiateType(aggregateInference, mergeTypeMappers(makeUnaryTypeMapper(inference.typeParameter, selfReference), context.nonFixingMapper));
2760727609
}
2760827610
else if (context.flags & InferenceFlags.NoDefault) {
2760927611
// We use silentNeverType as the wildcard that signals no inferences.
@@ -27618,7 +27620,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2761827620
const defaultType = getDefaultFromTypeParameter(inference.typeParameter);
2761927621
if (defaultType) {
2762027622
// Instantiate the default type. Any forward reference to a type
27621-
// parameter should be instantiated to the empty object type.
27623+
// parameter should be instantiated to the unknown type.
2762227624
inferredType = instantiateType(defaultType, mergeTypeMappers(createBackreferenceMapper(context, index), context.nonFixingMapper));
2762327625
}
2762427626
}

tests/baselines/reference/inferingFromAny.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,8 +279,8 @@ var a = f18(a);
279279

280280
var a = f19(a, a);
281281
>a : any
282-
>f19(a, a) : PartialInference<any, K>
283-
> : ^^^^^^^^^^^^^^^^^^^^^^^^
282+
>f19(a, a) : { [x: string]: any; }
283+
> : ^^^^^^^^^^^^^^^^^^^^^
284284
>f19 : <T, K extends keyof T>(k: K, x: T[K]) => T
285285
> : ^ ^^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^
286286
>a : any
Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
//// [tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts] ////
2+
3+
=== typeInferenceIndexingUsingOtherTypeParameter1.ts ===
4+
type Primitive = null | undefined | string | number | boolean | symbol | bigint;
5+
>Primitive : Symbol(Primitive, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 0))
6+
7+
type FieldValues = Record<string, any>;
8+
>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80))
9+
>Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
10+
11+
type PathImpl<
12+
>PathImpl : Symbol(PathImpl, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 2, 39))
13+
14+
K extends string | number,
15+
>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 4, 14))
16+
17+
V,
18+
>V : Symbol(V, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 5, 28))
19+
20+
TraversedTypes,
21+
>TraversedTypes : Symbol(TraversedTypes, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 6, 4))
22+
23+
> = V extends Primitive
24+
>V : Symbol(V, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 5, 28))
25+
>Primitive : Symbol(Primitive, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 0))
26+
27+
? `${K}`
28+
>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 4, 14))
29+
30+
: `${K}` | `${K}.${PathInternal<V, TraversedTypes | V>}`;
31+
>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 4, 14))
32+
>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 4, 14))
33+
>PathInternal : Symbol(PathInternal, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 10, 59))
34+
>V : Symbol(V, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 5, 28))
35+
>TraversedTypes : Symbol(TraversedTypes, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 6, 4))
36+
>V : Symbol(V, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 5, 28))
37+
38+
type PathInternal<T, TraversedTypes = T> = {
39+
>PathInternal : Symbol(PathInternal, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 10, 59))
40+
>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 18))
41+
>TraversedTypes : Symbol(TraversedTypes, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 20))
42+
>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 18))
43+
44+
[K in keyof T]-?: PathImpl<K & string, T[K], TraversedTypes>;
45+
>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 13, 3))
46+
>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 18))
47+
>PathImpl : Symbol(PathImpl, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 2, 39))
48+
>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 13, 3))
49+
>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 18))
50+
>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 13, 3))
51+
>TraversedTypes : Symbol(TraversedTypes, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 20))
52+
53+
}[keyof T];
54+
>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 12, 18))
55+
56+
type Path<T> = T extends any ? PathInternal<T> : never;
57+
>Path : Symbol(Path, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 14, 11))
58+
>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 10))
59+
>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 10))
60+
>PathInternal : Symbol(PathInternal, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 10, 59))
61+
>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 10))
62+
63+
type FieldPath<TFieldValues extends FieldValues> = Path<TFieldValues>;
64+
>FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55))
65+
>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 18, 15))
66+
>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80))
67+
>Path : Symbol(Path, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 14, 11))
68+
>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 18, 15))
69+
70+
type PathValue<T, P extends Path<T>> = T extends any
71+
>PathValue : Symbol(PathValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 18, 70))
72+
>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15))
73+
>P : Symbol(P, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 17))
74+
>Path : Symbol(Path, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 14, 11))
75+
>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15))
76+
>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15))
77+
78+
? P extends `${infer K}.${infer R}`
79+
>P : Symbol(P, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 17))
80+
>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 22))
81+
>R : Symbol(R, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 33))
82+
83+
? K extends keyof T
84+
>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 22))
85+
>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15))
86+
87+
? R extends Path<T[K]>
88+
>R : Symbol(R, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 33))
89+
>Path : Symbol(Path, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 14, 11))
90+
>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15))
91+
>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 22))
92+
93+
? PathValue<T[K], R>
94+
>PathValue : Symbol(PathValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 18, 70))
95+
>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15))
96+
>K : Symbol(K, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 22))
97+
>R : Symbol(R, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 21, 33))
98+
99+
: never
100+
: never
101+
: P extends keyof T
102+
>P : Symbol(P, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 17))
103+
>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15))
104+
105+
? T[P]
106+
>T : Symbol(T, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 15))
107+
>P : Symbol(P, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 20, 17))
108+
109+
: never
110+
: never;
111+
112+
type FieldPathValue<
113+
>FieldPathValue : Symbol(FieldPathValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 30, 10))
114+
115+
TFieldValues extends FieldValues,
116+
>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 32, 20))
117+
>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80))
118+
119+
TFieldPath extends FieldPath<TFieldValues>,
120+
>TFieldPath : Symbol(TFieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 33, 35))
121+
>FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55))
122+
>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 32, 20))
123+
124+
> = PathValue<TFieldValues, TFieldPath>;
125+
>PathValue : Symbol(PathValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 18, 70))
126+
>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 32, 20))
127+
>TFieldPath : Symbol(TFieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 33, 35))
128+
129+
type UseControllerProps<
130+
>UseControllerProps : Symbol(UseControllerProps, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 35, 40))
131+
132+
TFieldValues extends FieldValues = FieldValues,
133+
>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 37, 24))
134+
>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80))
135+
>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80))
136+
137+
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
138+
>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 38, 49))
139+
>FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55))
140+
>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 37, 24))
141+
>FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55))
142+
>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 37, 24))
143+
144+
> = {
145+
name: TName;
146+
>name : Symbol(name, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 40, 5))
147+
>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 38, 49))
148+
149+
defaultValue?: FieldPathValue<TFieldValues, TName>;
150+
>defaultValue : Symbol(defaultValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 41, 14))
151+
>FieldPathValue : Symbol(FieldPathValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 30, 10))
152+
>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 37, 24))
153+
>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 38, 49))
154+
155+
};
156+
157+
declare function useController<
158+
>useController : Symbol(useController, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 43, 2))
159+
160+
TFieldValues extends FieldValues = FieldValues,
161+
>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 45, 31))
162+
>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80))
163+
>FieldValues : Symbol(FieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 0, 80))
164+
165+
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
166+
>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 46, 49))
167+
>FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55))
168+
>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 45, 31))
169+
>FieldPath : Symbol(FieldPath, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 16, 55))
170+
>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 45, 31))
171+
172+
>(
173+
props: UseControllerProps<TFieldValues, TName>,
174+
>props : Symbol(props, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 48, 2))
175+
>UseControllerProps : Symbol(UseControllerProps, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 35, 40))
176+
>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 45, 31))
177+
>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 46, 49))
178+
179+
): { name: TName; values: TFieldValues };
180+
>name : Symbol(name, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 50, 4))
181+
>TName : Symbol(TName, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 46, 49))
182+
>values : Symbol(values, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 50, 17))
183+
>TFieldValues : Symbol(TFieldValues, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 45, 31))
184+
185+
export const { name, values } = useController({
186+
>name : Symbol(name, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 52, 14))
187+
>values : Symbol(values, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 52, 20))
188+
>useController : Symbol(useController, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 43, 2))
189+
190+
name: "test",
191+
>name : Symbol(name, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 52, 47))
192+
193+
defaultValue: "",
194+
>defaultValue : Symbol(defaultValue, Decl(typeInferenceIndexingUsingOtherTypeParameter1.ts, 53, 15))
195+
196+
});
197+
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
//// [tests/cases/compiler/typeInferenceIndexingUsingOtherTypeParameter1.ts] ////
2+
3+
=== Performance Stats ===
4+
Instantiation count: 2,500
5+
6+
=== typeInferenceIndexingUsingOtherTypeParameter1.ts ===
7+
type Primitive = null | undefined | string | number | boolean | symbol | bigint;
8+
>Primitive : Primitive
9+
> : ^^^^^^^^^
10+
11+
type FieldValues = Record<string, any>;
12+
>FieldValues : FieldValues
13+
> : ^^^^^^^^^^^
14+
15+
type PathImpl<
16+
>PathImpl : PathImpl<K, V, TraversedTypes>
17+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
18+
19+
K extends string | number,
20+
V,
21+
TraversedTypes,
22+
> = V extends Primitive
23+
? `${K}`
24+
: `${K}` | `${K}.${PathInternal<V, TraversedTypes | V>}`;
25+
26+
type PathInternal<T, TraversedTypes = T> = {
27+
>PathInternal : PathInternal<T, TraversedTypes>
28+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
29+
30+
[K in keyof T]-?: PathImpl<K & string, T[K], TraversedTypes>;
31+
}[keyof T];
32+
33+
type Path<T> = T extends any ? PathInternal<T> : never;
34+
>Path : Path<T>
35+
> : ^^^^^^^
36+
37+
type FieldPath<TFieldValues extends FieldValues> = Path<TFieldValues>;
38+
>FieldPath : FieldPath<TFieldValues>
39+
> : ^^^^^^^^^^^^^^^^^^^^^^^
40+
41+
type PathValue<T, P extends Path<T>> = T extends any
42+
>PathValue : PathValue<T, P>
43+
> : ^^^^^^^^^^^^^^^
44+
45+
? P extends `${infer K}.${infer R}`
46+
? K extends keyof T
47+
? R extends Path<T[K]>
48+
? PathValue<T[K], R>
49+
: never
50+
: never
51+
: P extends keyof T
52+
? T[P]
53+
: never
54+
: never;
55+
56+
type FieldPathValue<
57+
>FieldPathValue : FieldPathValue<TFieldValues, TFieldPath>
58+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
59+
60+
TFieldValues extends FieldValues,
61+
TFieldPath extends FieldPath<TFieldValues>,
62+
> = PathValue<TFieldValues, TFieldPath>;
63+
64+
type UseControllerProps<
65+
>UseControllerProps : UseControllerProps<TFieldValues, TName>
66+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
67+
68+
TFieldValues extends FieldValues = FieldValues,
69+
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
70+
> = {
71+
name: TName;
72+
>name : TName
73+
> : ^^^^^
74+
75+
defaultValue?: FieldPathValue<TFieldValues, TName>;
76+
>defaultValue : PathValue<TFieldValues, TName> | undefined
77+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
78+
79+
};
80+
81+
declare function useController<
82+
>useController : <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = Path<TFieldValues>>(props: UseControllerProps<TFieldValues, TName>) => { name: TName; values: TFieldValues; }
83+
> : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^
84+
85+
TFieldValues extends FieldValues = FieldValues,
86+
TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
87+
>(
88+
props: UseControllerProps<TFieldValues, TName>,
89+
>props : UseControllerProps<TFieldValues, TName>
90+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
91+
92+
): { name: TName; values: TFieldValues };
93+
>name : TName
94+
> : ^^^^^
95+
>values : TFieldValues
96+
> : ^^^^^^^^^^^^
97+
98+
export const { name, values } = useController({
99+
>name : "test"
100+
> : ^^^^^^
101+
>values : { test: string; }
102+
> : ^^^^^^^^^^^^^^^^^
103+
>useController({ name: "test", defaultValue: "",}) : { name: "test"; values: { test: string; }; }
104+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
105+
>useController : <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = Path<TFieldValues>>(props: UseControllerProps<TFieldValues, TName>) => { name: TName; values: TFieldValues; }
106+
> : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^
107+
>{ name: "test", defaultValue: "",} : { name: "test"; defaultValue: string; }
108+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
109+
110+
name: "test",
111+
>name : "test"
112+
> : ^^^^^^
113+
>"test" : "test"
114+
> : ^^^^^^
115+
116+
defaultValue: "",
117+
>defaultValue : string
118+
> : ^^^^^^
119+
>"" : ""
120+
> : ^^
121+
122+
});
123+

0 commit comments

Comments
 (0)