@@ -53,7 +53,7 @@ def form_parameter(operation):
53
53
}
54
54
55
55
56
- def type_to_typescript (schema , alternative_name = None ):
56
+ def type_to_typescript (schema , alternative_name = None , check_nullable = True ):
57
57
"""Return Typescript type name for the type."""
58
58
name = get_name (schema )
59
59
if name and "items" not in schema and not is_primitive (schema ):
@@ -88,12 +88,15 @@ def type_to_typescript(schema, alternative_name=None):
88
88
min_items = schema .get ("minItems" )
89
89
max_items = schema .get ("maxItems" )
90
90
if min_items is not None and min_items == max_items :
91
- sub_type = type_to_typescript (schema ["items" ], name + "Item" if name else None )
91
+ sub_type = type_to_typescript (schema ["items" ], name + "Item" if name else None , check_nullable = check_nullable )
92
92
return "[{}]" .format (", " .join ([sub_type ] * min_items ))
93
- return "Array<{}>" .format (type_to_typescript (schema ["items" ], name + "Item" if name else None ))
93
+ sub_type = type_to_typescript (schema ["items" ], name + "Item" if name else None , check_nullable = check_nullable )
94
+ if check_nullable and schema ["items" ].get ("nullable" ):
95
+ sub_type = f"{ sub_type } | null"
96
+ return "Array<{}>" .format (sub_type )
94
97
elif type_ == "object" :
95
98
if "additionalProperties" in schema and not schema .get ("properties" ):
96
- return "{{ [key: string]: {}; }}" .format (type_to_typescript (schema ["additionalProperties" ]))
99
+ return "{{ [key: string]: {}; }}" .format (type_to_typescript (schema ["additionalProperties" ], check_nullable = check_nullable ))
97
100
return (
98
101
alternative_name
99
102
if alternative_name
0 commit comments