Skip to content

Commit 390aad2

Browse files
committed
add extra test case
1 parent 5a0d2de commit 390aad2

File tree

3 files changed

+408
-0
lines changed

3 files changed

+408
-0
lines changed
Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
//// [tests/cases/conformance/types/typeRelationships/typeInference/noInferVsDistributiveConditionalType3.ts] ////
2+
3+
=== noInferVsDistributiveConditionalType3.ts ===
4+
// based on https://github.com/microsoft/TypeScript/issues/51831
5+
6+
type NoMatchAll<K> = Exclude<K, "_">
7+
>NoMatchAll : Symbol(NoMatchAll, Decl(noInferVsDistributiveConditionalType3.ts, 0, 0))
8+
>K : Symbol(K, Decl(noInferVsDistributiveConditionalType3.ts, 2, 16))
9+
>Exclude : Symbol(Exclude, Decl(lib.es5.d.ts, --, --))
10+
>K : Symbol(K, Decl(noInferVsDistributiveConditionalType3.ts, 2, 16))
11+
12+
type Union<T extends object> = {
13+
>Union : Symbol(Union, Decl(noInferVsDistributiveConditionalType3.ts, 2, 36))
14+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 4, 11))
15+
16+
[P in keyof T]: ({ [Q in "kind"]: P } & T[P]) extends infer U ? { [Q in keyof U]: U[Q] } : never
17+
>P : Symbol(P, Decl(noInferVsDistributiveConditionalType3.ts, 5, 3))
18+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 4, 11))
19+
>Q : Symbol(Q, Decl(noInferVsDistributiveConditionalType3.ts, 5, 22))
20+
>P : Symbol(P, Decl(noInferVsDistributiveConditionalType3.ts, 5, 3))
21+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 4, 11))
22+
>P : Symbol(P, Decl(noInferVsDistributiveConditionalType3.ts, 5, 3))
23+
>U : Symbol(U, Decl(noInferVsDistributiveConditionalType3.ts, 5, 61))
24+
>Q : Symbol(Q, Decl(noInferVsDistributiveConditionalType3.ts, 5, 69))
25+
>U : Symbol(U, Decl(noInferVsDistributiveConditionalType3.ts, 5, 61))
26+
>U : Symbol(U, Decl(noInferVsDistributiveConditionalType3.ts, 5, 61))
27+
>Q : Symbol(Q, Decl(noInferVsDistributiveConditionalType3.ts, 5, 69))
28+
29+
}[keyof T]
30+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 4, 11))
31+
32+
type UnionMap<U extends { kind: string }> = { [K in U["kind"]]: U extends { kind: K } ? U : never }
33+
>UnionMap : Symbol(UnionMap, Decl(noInferVsDistributiveConditionalType3.ts, 6, 10))
34+
>U : Symbol(U, Decl(noInferVsDistributiveConditionalType3.ts, 7, 14))
35+
>kind : Symbol(kind, Decl(noInferVsDistributiveConditionalType3.ts, 7, 25))
36+
>K : Symbol(K, Decl(noInferVsDistributiveConditionalType3.ts, 7, 47))
37+
>U : Symbol(U, Decl(noInferVsDistributiveConditionalType3.ts, 7, 14))
38+
>U : Symbol(U, Decl(noInferVsDistributiveConditionalType3.ts, 7, 14))
39+
>kind : Symbol(kind, Decl(noInferVsDistributiveConditionalType3.ts, 7, 75))
40+
>K : Symbol(K, Decl(noInferVsDistributiveConditionalType3.ts, 7, 47))
41+
>U : Symbol(U, Decl(noInferVsDistributiveConditionalType3.ts, 7, 14))
42+
43+
type ExhaustivePattern<T extends { kind: string }, R> = { [K in T["kind"] as NoMatchAll<K>]: (u1: UnionMap<T>[K]) => R };
44+
>ExhaustivePattern : Symbol(ExhaustivePattern, Decl(noInferVsDistributiveConditionalType3.ts, 7, 99))
45+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 8, 23))
46+
>kind : Symbol(kind, Decl(noInferVsDistributiveConditionalType3.ts, 8, 34))
47+
>R : Symbol(R, Decl(noInferVsDistributiveConditionalType3.ts, 8, 50))
48+
>K : Symbol(K, Decl(noInferVsDistributiveConditionalType3.ts, 8, 59))
49+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 8, 23))
50+
>NoMatchAll : Symbol(NoMatchAll, Decl(noInferVsDistributiveConditionalType3.ts, 0, 0))
51+
>K : Symbol(K, Decl(noInferVsDistributiveConditionalType3.ts, 8, 59))
52+
>u1 : Symbol(u1, Decl(noInferVsDistributiveConditionalType3.ts, 8, 94))
53+
>UnionMap : Symbol(UnionMap, Decl(noInferVsDistributiveConditionalType3.ts, 6, 10))
54+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 8, 23))
55+
>K : Symbol(K, Decl(noInferVsDistributiveConditionalType3.ts, 8, 59))
56+
>R : Symbol(R, Decl(noInferVsDistributiveConditionalType3.ts, 8, 50))
57+
58+
type NonExhaustivePattern<T extends { kind: string }, R> = { [K in T["kind"] as NoMatchAll<K>]?: (u2: UnionMap<T>[K]) => R } & {_: (union: T) => R};
59+
>NonExhaustivePattern : Symbol(NonExhaustivePattern, Decl(noInferVsDistributiveConditionalType3.ts, 8, 121))
60+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 9, 26))
61+
>kind : Symbol(kind, Decl(noInferVsDistributiveConditionalType3.ts, 9, 37))
62+
>R : Symbol(R, Decl(noInferVsDistributiveConditionalType3.ts, 9, 53))
63+
>K : Symbol(K, Decl(noInferVsDistributiveConditionalType3.ts, 9, 62))
64+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 9, 26))
65+
>NoMatchAll : Symbol(NoMatchAll, Decl(noInferVsDistributiveConditionalType3.ts, 0, 0))
66+
>K : Symbol(K, Decl(noInferVsDistributiveConditionalType3.ts, 9, 62))
67+
>u2 : Symbol(u2, Decl(noInferVsDistributiveConditionalType3.ts, 9, 98))
68+
>UnionMap : Symbol(UnionMap, Decl(noInferVsDistributiveConditionalType3.ts, 6, 10))
69+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 9, 26))
70+
>K : Symbol(K, Decl(noInferVsDistributiveConditionalType3.ts, 9, 62))
71+
>R : Symbol(R, Decl(noInferVsDistributiveConditionalType3.ts, 9, 53))
72+
>_ : Symbol(_, Decl(noInferVsDistributiveConditionalType3.ts, 9, 128))
73+
>union : Symbol(union, Decl(noInferVsDistributiveConditionalType3.ts, 9, 132))
74+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 9, 26))
75+
>R : Symbol(R, Decl(noInferVsDistributiveConditionalType3.ts, 9, 53))
76+
77+
type Pattern<T extends { kind: string }, R> = ExhaustivePattern<T, R> | NonExhaustivePattern<T, R>;
78+
>Pattern : Symbol(Pattern, Decl(noInferVsDistributiveConditionalType3.ts, 9, 148))
79+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 10, 13))
80+
>kind : Symbol(kind, Decl(noInferVsDistributiveConditionalType3.ts, 10, 24))
81+
>R : Symbol(R, Decl(noInferVsDistributiveConditionalType3.ts, 10, 40))
82+
>ExhaustivePattern : Symbol(ExhaustivePattern, Decl(noInferVsDistributiveConditionalType3.ts, 7, 99))
83+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 10, 13))
84+
>R : Symbol(R, Decl(noInferVsDistributiveConditionalType3.ts, 10, 40))
85+
>NonExhaustivePattern : Symbol(NonExhaustivePattern, Decl(noInferVsDistributiveConditionalType3.ts, 8, 121))
86+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 10, 13))
87+
>R : Symbol(R, Decl(noInferVsDistributiveConditionalType3.ts, 10, 40))
88+
89+
function match<U extends { kind: string }, T>(union: U, pattern: Pattern<NoInfer<U>, T>): T {
90+
>match : Symbol(match, Decl(noInferVsDistributiveConditionalType3.ts, 10, 99))
91+
>U : Symbol(U, Decl(noInferVsDistributiveConditionalType3.ts, 12, 15))
92+
>kind : Symbol(kind, Decl(noInferVsDistributiveConditionalType3.ts, 12, 26))
93+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 12, 42))
94+
>union : Symbol(union, Decl(noInferVsDistributiveConditionalType3.ts, 12, 46))
95+
>U : Symbol(U, Decl(noInferVsDistributiveConditionalType3.ts, 12, 15))
96+
>pattern : Symbol(pattern, Decl(noInferVsDistributiveConditionalType3.ts, 12, 55))
97+
>Pattern : Symbol(Pattern, Decl(noInferVsDistributiveConditionalType3.ts, 9, 148))
98+
>NoInfer : Symbol(NoInfer, Decl(lib.es5.d.ts, --, --))
99+
>U : Symbol(U, Decl(noInferVsDistributiveConditionalType3.ts, 12, 15))
100+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 12, 42))
101+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 12, 42))
102+
103+
if((pattern as any)[union.kind]) {
104+
>pattern : Symbol(pattern, Decl(noInferVsDistributiveConditionalType3.ts, 12, 55))
105+
>union.kind : Symbol(kind, Decl(noInferVsDistributiveConditionalType3.ts, 12, 26))
106+
>union : Symbol(union, Decl(noInferVsDistributiveConditionalType3.ts, 12, 46))
107+
>kind : Symbol(kind, Decl(noInferVsDistributiveConditionalType3.ts, 12, 26))
108+
109+
return (pattern as any)[union.kind](union as U) as T
110+
>pattern : Symbol(pattern, Decl(noInferVsDistributiveConditionalType3.ts, 12, 55))
111+
>union.kind : Symbol(kind, Decl(noInferVsDistributiveConditionalType3.ts, 12, 26))
112+
>union : Symbol(union, Decl(noInferVsDistributiveConditionalType3.ts, 12, 46))
113+
>kind : Symbol(kind, Decl(noInferVsDistributiveConditionalType3.ts, 12, 26))
114+
>union : Symbol(union, Decl(noInferVsDistributiveConditionalType3.ts, 12, 46))
115+
>U : Symbol(U, Decl(noInferVsDistributiveConditionalType3.ts, 12, 15))
116+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 12, 42))
117+
}
118+
return (pattern as any)["_"](union as U) as T
119+
>pattern : Symbol(pattern, Decl(noInferVsDistributiveConditionalType3.ts, 12, 55))
120+
>union : Symbol(union, Decl(noInferVsDistributiveConditionalType3.ts, 12, 46))
121+
>U : Symbol(U, Decl(noInferVsDistributiveConditionalType3.ts, 12, 15))
122+
>T : Symbol(T, Decl(noInferVsDistributiveConditionalType3.ts, 12, 42))
123+
}
124+
125+
type ValueType = Union<{
126+
>ValueType : Symbol(ValueType, Decl(noInferVsDistributiveConditionalType3.ts, 17, 1))
127+
>Union : Symbol(Union, Decl(noInferVsDistributiveConditionalType3.ts, 2, 36))
128+
129+
String: {value: string},
130+
>String : Symbol(String, Decl(noInferVsDistributiveConditionalType3.ts, 19, 24))
131+
>value : Symbol(value, Decl(noInferVsDistributiveConditionalType3.ts, 20, 11))
132+
133+
Number: {value: number},
134+
>Number : Symbol(Number, Decl(noInferVsDistributiveConditionalType3.ts, 20, 26))
135+
>value : Symbol(value, Decl(noInferVsDistributiveConditionalType3.ts, 21, 11))
136+
137+
Boolean: {value: boolean},
138+
>Boolean : Symbol(Boolean, Decl(noInferVsDistributiveConditionalType3.ts, 21, 26))
139+
>value : Symbol(value, Decl(noInferVsDistributiveConditionalType3.ts, 22, 12))
140+
141+
Date: {value: Date}
142+
>Date : Symbol(Date, Decl(noInferVsDistributiveConditionalType3.ts, 22, 28))
143+
>value : Symbol(value, Decl(noInferVsDistributiveConditionalType3.ts, 23, 9))
144+
>Date : Symbol(Date, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.scripthost.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
145+
146+
}>
147+
148+
function main(value: ValueType) {
149+
>main : Symbol(main, Decl(noInferVsDistributiveConditionalType3.ts, 24, 2))
150+
>value : Symbol(value, Decl(noInferVsDistributiveConditionalType3.ts, 26, 14))
151+
>ValueType : Symbol(ValueType, Decl(noInferVsDistributiveConditionalType3.ts, 17, 1))
152+
153+
let test1 = match(value, {
154+
>test1 : Symbol(test1, Decl(noInferVsDistributiveConditionalType3.ts, 27, 5))
155+
>match : Symbol(match, Decl(noInferVsDistributiveConditionalType3.ts, 10, 99))
156+
>value : Symbol(value, Decl(noInferVsDistributiveConditionalType3.ts, 26, 14))
157+
158+
String: ({value}) => value,
159+
>String : Symbol(String, Decl(noInferVsDistributiveConditionalType3.ts, 27, 28))
160+
>value : Symbol(value, Decl(noInferVsDistributiveConditionalType3.ts, 28, 14))
161+
>value : Symbol(value, Decl(noInferVsDistributiveConditionalType3.ts, 28, 14))
162+
163+
Number: ({value}) => value.toString(),
164+
>Number : Symbol(Number, Decl(noInferVsDistributiveConditionalType3.ts, 28, 31))
165+
>value : Symbol(value, Decl(noInferVsDistributiveConditionalType3.ts, 29, 14))
166+
>value.toString : Symbol(Number.toString, Decl(lib.es5.d.ts, --, --))
167+
>value : Symbol(value, Decl(noInferVsDistributiveConditionalType3.ts, 29, 14))
168+
>toString : Symbol(Number.toString, Decl(lib.es5.d.ts, --, --))
169+
170+
_: (token) => "Unknown"
171+
>_ : Symbol(_, Decl(noInferVsDistributiveConditionalType3.ts, 29, 42))
172+
>token : Symbol(token, Decl(noInferVsDistributiveConditionalType3.ts, 30, 8))
173+
174+
});
175+
}
176+
Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
//// [tests/cases/conformance/types/typeRelationships/typeInference/noInferVsDistributiveConditionalType3.ts] ////
2+
3+
=== noInferVsDistributiveConditionalType3.ts ===
4+
// based on https://github.com/microsoft/TypeScript/issues/51831
5+
6+
type NoMatchAll<K> = Exclude<K, "_">
7+
>NoMatchAll : NoMatchAll<K>
8+
> : ^^^^^^^^^^^^^
9+
10+
type Union<T extends object> = {
11+
>Union : Union<T>
12+
> : ^^^^^^^^
13+
14+
[P in keyof T]: ({ [Q in "kind"]: P } & T[P]) extends infer U ? { [Q in keyof U]: U[Q] } : never
15+
}[keyof T]
16+
type UnionMap<U extends { kind: string }> = { [K in U["kind"]]: U extends { kind: K } ? U : never }
17+
>UnionMap : UnionMap<U>
18+
> : ^^^^^^^^^^^
19+
>kind : string
20+
> : ^^^^^^
21+
>kind : K
22+
> : ^
23+
24+
type ExhaustivePattern<T extends { kind: string }, R> = { [K in T["kind"] as NoMatchAll<K>]: (u1: UnionMap<T>[K]) => R };
25+
>ExhaustivePattern : ExhaustivePattern<T, R>
26+
> : ^^^^^^^^^^^^^^^^^^^^^^^
27+
>kind : string
28+
> : ^^^^^^
29+
>u1 : UnionMap<T>[K]
30+
> : ^^^^^^^^^^^^^^
31+
32+
type NonExhaustivePattern<T extends { kind: string }, R> = { [K in T["kind"] as NoMatchAll<K>]?: (u2: UnionMap<T>[K]) => R } & {_: (union: T) => R};
33+
>NonExhaustivePattern : NonExhaustivePattern<T, R>
34+
> : ^^^^^^^^^^^^^^^^^^^^^^^^^^
35+
>kind : string
36+
> : ^^^^^^
37+
>u2 : UnionMap<T>[K]
38+
> : ^^^^^^^^^^^^^^
39+
>_ : (union: T) => R
40+
> : ^ ^^ ^^^^^
41+
>union : T
42+
> : ^
43+
44+
type Pattern<T extends { kind: string }, R> = ExhaustivePattern<T, R> | NonExhaustivePattern<T, R>;
45+
>Pattern : Pattern<T, R>
46+
> : ^^^^^^^^^^^^^
47+
>kind : string
48+
> : ^^^^^^
49+
50+
function match<U extends { kind: string }, T>(union: U, pattern: Pattern<NoInfer<U>, T>): T {
51+
>match : <U extends { kind: string; }, T>(union: U, pattern: Pattern<NoInfer<U>, T>) => T
52+
> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^
53+
>kind : string
54+
> : ^^^^^^
55+
>union : U
56+
> : ^
57+
>pattern : Pattern<NoInfer<U>, T>
58+
> : ^^^^^^^^^^^^^^^^^^^^^^
59+
60+
if((pattern as any)[union.kind]) {
61+
>(pattern as any)[union.kind] : any
62+
>(pattern as any) : any
63+
>pattern as any : any
64+
>pattern : Pattern<NoInfer<U>, T>
65+
> : ^^^^^^^^^^^^^^^^^^^^^^
66+
>union.kind : string
67+
> : ^^^^^^
68+
>union : U
69+
> : ^
70+
>kind : string
71+
> : ^^^^^^
72+
73+
return (pattern as any)[union.kind](union as U) as T
74+
>(pattern as any)[union.kind](union as U) as T : T
75+
> : ^
76+
>(pattern as any)[union.kind](union as U) : any
77+
>(pattern as any)[union.kind] : any
78+
>(pattern as any) : any
79+
>pattern as any : any
80+
>pattern : Pattern<NoInfer<U>, T>
81+
> : ^^^^^^^^^^^^^^^^^^^^^^
82+
>union.kind : string
83+
> : ^^^^^^
84+
>union : U
85+
> : ^
86+
>kind : string
87+
> : ^^^^^^
88+
>union as U : U
89+
> : ^
90+
>union : U
91+
> : ^
92+
}
93+
return (pattern as any)["_"](union as U) as T
94+
>(pattern as any)["_"](union as U) as T : T
95+
> : ^
96+
>(pattern as any)["_"](union as U) : any
97+
>(pattern as any)["_"] : any
98+
>(pattern as any) : any
99+
>pattern as any : any
100+
>pattern : Pattern<NoInfer<U>, T>
101+
> : ^^^^^^^^^^^^^^^^^^^^^^
102+
>"_" : "_"
103+
> : ^^^
104+
>union as U : U
105+
> : ^
106+
>union : U
107+
> : ^
108+
}
109+
110+
type ValueType = Union<{
111+
>ValueType : ValueType
112+
> : ^^^^^^^^^
113+
114+
String: {value: string},
115+
>String : { value: string; }
116+
> : ^^^^^^^^^ ^^^
117+
>value : string
118+
> : ^^^^^^
119+
120+
Number: {value: number},
121+
>Number : { value: number; }
122+
> : ^^^^^^^^^ ^^^
123+
>value : number
124+
> : ^^^^^^
125+
126+
Boolean: {value: boolean},
127+
>Boolean : { value: boolean; }
128+
> : ^^^^^^^^^ ^^^
129+
>value : boolean
130+
> : ^^^^^^^
131+
132+
Date: {value: Date}
133+
>Date : { value: Date; }
134+
> : ^^^^^^^^^ ^^^
135+
>value : Date
136+
> : ^^^^
137+
138+
}>
139+
140+
function main(value: ValueType) {
141+
>main : (value: ValueType) => void
142+
> : ^ ^^ ^^^^^^^^^
143+
>value : ValueType
144+
> : ^^^^^^^^^
145+
146+
let test1 = match(value, {
147+
>test1 : string
148+
> : ^^^^^^
149+
>match(value, { String: ({value}) => value, Number: ({value}) => value.toString(), _: (token) => "Unknown" }) : string
150+
> : ^^^^^^
151+
>match : <U extends { kind: string; }, T>(union: U, pattern: Pattern<NoInfer<U>, T>) => T
152+
> : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^
153+
>value : ValueType
154+
> : ^^^^^^^^^
155+
>{ String: ({value}) => value, Number: ({value}) => value.toString(), _: (token) => "Unknown" } : { String: ({ value }: { kind: "String"; value: string; }) => string; Number: ({ value }: { kind: "Number"; value: number; }) => string; _: (token: NoInfer<ValueType>) => string; }
156+
> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
157+
158+
String: ({value}) => value,
159+
>String : ({ value }: { kind: "String"; value: string; }) => string
160+
> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
161+
>({value}) => value : ({ value }: { kind: "String"; value: string; }) => string
162+
> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
163+
>value : string
164+
> : ^^^^^^
165+
>value : string
166+
> : ^^^^^^
167+
168+
Number: ({value}) => value.toString(),
169+
>Number : ({ value }: { kind: "Number"; value: number; }) => string
170+
> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
171+
>({value}) => value.toString() : ({ value }: { kind: "Number"; value: number; }) => string
172+
> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
173+
>value : number
174+
> : ^^^^^^
175+
>value.toString() : string
176+
> : ^^^^^^
177+
>value.toString : (radix?: number) => string
178+
> : ^ ^^^ ^^^^^
179+
>value : number
180+
> : ^^^^^^
181+
>toString : (radix?: number) => string
182+
> : ^ ^^^ ^^^^^
183+
184+
_: (token) => "Unknown"
185+
>_ : (token: NoInfer<ValueType>) => string
186+
> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
187+
>(token) => "Unknown" : (token: NoInfer<ValueType>) => string
188+
> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
189+
>token : NoInfer<ValueType>
190+
> : ^^^^^^^^^^^^^^^^^^
191+
>"Unknown" : "Unknown"
192+
> : ^^^^^^^^^
193+
194+
});
195+
}
196+

0 commit comments

Comments
 (0)