nl_tokens: For a union type remove all constituent types that are of the given type kind ( when isOfTypeKind is true ) or not of the given type kind ( when isOfTypeKind is false )
pl_tokens: function removeTypesFromUnionType ( type , typeKind , isOfTypeKind , allowEmptyUnionResult ) { if ( type . flags & 16384 /* Union */ ) { var types = type . types ; if ( ts . forEach ( types , function ( t ) { return ! ! ( t . flags & typeKind ) === isOfTypeKind ; } ) ) { // Above we checked if we have anything to remove, now use the opposite test to do the removal var narrowedType = getUnionType ( ts . filter ( types , function ( t ) { return ! ( t . <mask> & typeKind ) === isOfTypeKind ; } ) ) ; if ( allowEmptyUnionResult || narrowedType !== emptyObjectType ) { return narrowedType ; } } } else if ( allowEmptyUnionResult && ! ! ( type . flags & typeKind ) === isOfTypeKind ) { // Use getUnionType(emptyArray) instead of emptyObjectType in case the way empty union types // are represented ever changes. return getUnionType ( emptyArray ) ; } return type ; }