@@ -6,7 +6,6 @@ import { LiteralType, LiteralValue } from "../Type/LiteralType.js";
66import { NullType } from "../Type/NullType.js" ;
77import { StringType } from "../Type/StringType.js" ;
88import { UnionType } from "../Type/UnionType.js" ;
9- import { derefAliasedType , isHiddenType } from "../Utils/derefType.js" ;
109import { typeName } from "../Utils/typeName.js" ;
1110import { uniqueArray } from "../Utils/uniqueArray.js" ;
1211
@@ -20,10 +19,10 @@ export class LiteralUnionTypeFormatter implements SubTypeFormatter {
2019 let allStrings = true ;
2120 let hasNull = false ;
2221
23- const flattenedTypes = flattenTypes ( type ) ;
22+ const literals = type . getFlattenedTypes ( ) ;
2423
2524 // filter out String types since we need to be more careful about them
26- const types = flattenedTypes . filter ( ( t ) => {
25+ const types = literals . filter ( ( t ) => {
2726 if ( t instanceof StringType ) {
2827 hasString = true ;
2928 preserveLiterals = preserveLiterals || t . getPreserveLiterals ( ) ;
@@ -70,23 +69,10 @@ export class LiteralUnionTypeFormatter implements SubTypeFormatter {
7069 }
7170}
7271
73- function flattenTypes ( type : UnionType ) : ( StringType | LiteralType | NullType ) [ ] {
74- return type
75- . getTypes ( )
76- . filter ( ( t ) => ! isHiddenType ( t ) )
77- . map ( derefAliasedType )
78- . flatMap ( ( t ) => {
79- if ( t instanceof UnionType ) {
80- return flattenTypes ( t ) ;
81- }
82- return t as StringType | LiteralType | NullType ;
83- } ) ;
84- }
85-
8672export function isLiteralUnion ( type : UnionType ) : boolean {
87- return flattenTypes ( type ) . every (
88- ( item ) => item instanceof LiteralType || item instanceof NullType || item instanceof StringType ,
89- ) ;
73+ return type
74+ . getFlattenedTypes ( )
75+ . every ( ( item ) => item instanceof LiteralType || item instanceof NullType || item instanceof StringType ) ;
9076}
9177
9278function getLiteralValue ( value : LiteralType | NullType ) : LiteralValue | null {
0 commit comments