File tree Expand file tree Collapse file tree 4 files changed +129
-10
lines changed Expand file tree Collapse file tree 4 files changed +129
-10
lines changed Original file line number Diff line number Diff line change 11{
22 "name" : " typescript-api-extractor" ,
3- "version" : " 1.0.0-alpha.1 " ,
3+ "version" : " 1.0.0-alpha.2 " ,
44 "description" : " Extracts API description from TypeScript code" ,
55 "author" : {
66 "name" : " Michał Dudak" ,
Original file line number Diff line number Diff line change @@ -248,16 +248,20 @@ export function resolveType(
248248 }
249249
250250 if ( type . flags & ts . TypeFlags . Conditional ) {
251- // We don't fully support conditional types. We assume the condition is always true.
252- if (
253- type . aliasSymbol ?. declarations ?. [ 0 ] &&
254- ts . isTypeAliasDeclaration ( type . aliasSymbol . declarations [ 0 ] ) &&
255- ts . isConditionalTypeNode ( type . aliasSymbol . declarations [ 0 ] . type )
256- ) {
257- const trueType = checker . getTypeFromTypeNode (
258- type . aliasSymbol . declarations [ 0 ] . type . trueType ,
251+ const conditionalType = type as ts . ConditionalType ;
252+ if ( conditionalType . resolvedTrueType && conditionalType . resolvedFalseType ) {
253+ return new UnionNode (
254+ undefined ,
255+ [ ] ,
256+ [
257+ resolveType ( ( type as ts . ConditionalType ) . resolvedTrueType ! , context ) ,
258+ resolveType ( ( type as ts . ConditionalType ) . resolvedFalseType ! , context ) ,
259+ ] ,
259260 ) ;
260- return resolveType ( trueType , context ) ;
261+ } else if ( conditionalType . resolvedTrueType ) {
262+ return resolveType ( conditionalType . resolvedTrueType , context ) ;
263+ } else if ( conditionalType . resolvedFalseType ) {
264+ return resolveType ( conditionalType . resolvedFalseType , context ) ;
261265 }
262266 }
263267
Original file line number Diff line number Diff line change 1+ export function fn < T extends boolean > ( x : T ) : T extends true ? number : null {
2+ return ( x ? 1 : null ) as T extends true ? number : null ;
3+ }
4+
5+ export function Component1 < Multiple extends boolean > ( props : Props < Multiple > ) {
6+ return null ;
7+ }
8+
9+ interface Props < Multiple extends boolean > {
10+ value : Multiple extends true ? string | null : string [ ] ;
11+ }
Original file line number Diff line number Diff line change 1+ {
2+ "name" : " test/conditional-types/input" ,
3+ "exports" : [
4+ {
5+ "name" : " fn" ,
6+ "type" : {
7+ "kind" : " function" ,
8+ "name" : " fn" ,
9+ "parentNamespaces" : [],
10+ "callSignatures" : [
11+ {
12+ "parameters" : [
13+ {
14+ "type" : {
15+ "kind" : " typeParameter" ,
16+ "name" : " T" ,
17+ "parentNamespaces" : [],
18+ "constraint" : " boolean"
19+ },
20+ "name" : " x" ,
21+ "optional" : false
22+ }
23+ ],
24+ "returnValueType" : {
25+ "kind" : " union" ,
26+ "types" : [
27+ {
28+ "kind" : " intrinsic" ,
29+ "parentNamespaces" : [],
30+ "name" : " number"
31+ },
32+ {
33+ "kind" : " intrinsic" ,
34+ "parentNamespaces" : [],
35+ "name" : " null"
36+ }
37+ ],
38+ "parentNamespaces" : []
39+ }
40+ }
41+ ]
42+ }
43+ },
44+ {
45+ "name" : " Component1" ,
46+ "type" : {
47+ "kind" : " function" ,
48+ "name" : " Component1" ,
49+ "parentNamespaces" : [],
50+ "callSignatures" : [
51+ {
52+ "parameters" : [
53+ {
54+ "type" : {
55+ "kind" : " object" ,
56+ "name" : " Props" ,
57+ "parentNamespaces" : [],
58+ "properties" : [
59+ {
60+ "name" : " value" ,
61+ "type" : {
62+ "kind" : " union" ,
63+ "types" : [
64+ {
65+ "kind" : " intrinsic" ,
66+ "parentNamespaces" : [],
67+ "name" : " string"
68+ },
69+ {
70+ "kind" : " array" ,
71+ "parentNamespaces" : [],
72+ "elementType" : {
73+ "kind" : " intrinsic" ,
74+ "parentNamespaces" : [],
75+ "name" : " string"
76+ }
77+ },
78+ {
79+ "kind" : " intrinsic" ,
80+ "parentNamespaces" : [],
81+ "name" : " null"
82+ }
83+ ],
84+ "parentNamespaces" : []
85+ },
86+ "optional" : false
87+ }
88+ ]
89+ },
90+ "name" : " props" ,
91+ "optional" : false
92+ }
93+ ],
94+ "returnValueType" : {
95+ "kind" : " intrinsic" ,
96+ "parentNamespaces" : [],
97+ "name" : " null"
98+ }
99+ }
100+ ]
101+ }
102+ }
103+ ]
104+ }
You can’t perform that action at this time.
0 commit comments