Skip to content

Union types with enum and class not working property #2300

Closed
@StevenRasmussen

Description

@StevenRasmussen

From what I understand, the following should work but it is generating errors:

           export class FilterExpression {
                constructor();
                constructor(FilterOperator: LogicalOperator);
                constructor(public FilterOperator?: LogicalOperator) {
                    if (FilterOperator == null) {
                        FilterOperator = LogicalOperator.And;
                        this.Filters = new Array<FilterExpression>();
                    }
                }
                Filters: Array<FilterExpression>;
                AddFilter(p: LogicalOperator | FilterExpression): void {
                    var Filter:FilterExpression = null;
                    if (typeof p === "LogicalOperator") {
                        Filter = new FilterExpression(p); //Generates an error here
                    }
                    else if (typeof p === "FilterExpression") {
                        Filter = p; //Generates an error here
                    }
                    this.Filters.push(Filter);
                }
            }

            enum LogicalOperator {
                And = 0,
                Or = 1
            }

If I change it to this then I don't get any errors

                AddFilter(p: any): void {
                    var Filter:FilterExpression = null;
                    if (typeof p === "LogicalOperator") {
                        Filter = new FilterExpression(p);
                    }
                    else if (typeof p === "FilterExpression") {
                        Filter = p;
                    }
                    this.Filters.push(Filter);
                }

Metadata

Metadata

Assignees

No one assigned

    Labels

    By DesignDeprecated - use "Working as Intended" or "Design Limitation" instead

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions