@@ -261,7 +261,7 @@ export function emitWebIdl(webidl: Browser.WebIdl, flavor: Flavor, iterator: boo
261
261
if ( obj . overrideType ) return obj . overrideType ! ;
262
262
if ( ! obj . type ) throw new Error ( "Missing type " + JSON . stringify ( obj ) ) ;
263
263
const type = convertDomTypeToTsTypeWorker ( obj ) ;
264
- return type . nullable ? makeNullable ( type . name ) : type . name ;
264
+ return obj . nullable ? makeNullable ( type ) : type ;
265
265
}
266
266
267
267
function convertDomTypeToTsReturnType ( obj : Browser . Typed ) : string {
@@ -278,38 +278,25 @@ export function emitWebIdl(webidl: Browser.WebIdl, flavor: Flavor, iterator: boo
278
278
return type ;
279
279
}
280
280
281
- function convertDomTypeToTsTypeWorker ( obj : Browser . Typed ) : { name : string ; nullable : boolean } {
282
- let type ;
283
- if ( ! obj . additionalTypes && typeof obj . type === "string" ) {
284
- type = { name : convertDomTypeToTsTypeSimple ( obj . type ) , nullable : ! ! obj . nullable } ;
285
- }
286
- else {
287
- const types = typeof obj . type === "string" ? [ { ...obj , additionalTypes : undefined } ] : obj . type ;
288
- types . push ( ...( obj . additionalTypes ?? [ ] ) . map ( t => ( { type : t } ) ) ) ;
289
-
290
- const converted = types . map ( convertDomTypeToTsTypeWorker ) ;
291
- const isAny = converted . some ( t => t . name === "any" ) ;
292
- if ( isAny ) {
293
- type = {
294
- name : "any" ,
295
- nullable : false
296
- } ;
281
+ function convertDomTypeToTsTypeWorker ( obj : Browser . Typed ) : string {
282
+ function convertBaseType ( ) {
283
+ if ( ! obj . additionalTypes && typeof obj . type === "string" ) {
284
+ return convertDomTypeToTsTypeSimple ( obj . type ) ;
297
285
}
298
286
else {
299
- type = {
300
- name : converted . map ( t => t . name ) . join ( " | " ) ,
301
- nullable : converted . some ( t => t . nullable ) || ! ! obj . nullable
302
- } ;
287
+ const types = typeof obj . type === "string" ? [ { ...obj , additionalTypes : undefined } ] : obj . type ;
288
+ types . push ( ...( obj . additionalTypes ?? [ ] ) . map ( t => ( { type : t } ) ) ) ;
289
+
290
+ const converted = types . map ( convertDomTypeToTsTypeWorker ) ;
291
+ const isAny = converted . some ( t => t === "any" ) ;
292
+ return isAny ? "any" : converted . join ( " | " ) ;
303
293
}
304
294
}
305
295
306
- const subtypes = arrayify ( obj . subtype ) . map ( convertDomTypeToTsTypeWorker ) ;
307
- const subtypeString = subtypes . map ( subtype => subtype . nullable ? makeNullable ( subtype . name ) : subtype . name ) . join ( ", " ) ;
296
+ const type = convertBaseType ( ) ;
297
+ const subtypeString = arrayify ( obj . subtype ) . map ( convertDomTypeToTsType ) . join ( ", " ) ;
308
298
309
- return {
310
- name : ( type . name === "Array" && subtypeString ) ? makeArrayType ( subtypeString , obj ) : `${ type . name } ${ subtypeString ? `<${ subtypeString } >` : "" } ` ,
311
- nullable : type . nullable
312
- } ;
299
+ return ( type === "Array" && subtypeString ) ? makeArrayType ( subtypeString , obj ) : `${ type } ${ subtypeString ? `<${ subtypeString } >` : "" } ` ;
313
300
}
314
301
315
302
function makeArrayType ( elementType : string , obj : Browser . Typed ) : string {
0 commit comments