8000 Discriminated Unions In Switch Statements Don't Respect Destructuring · Issue #15889 · microsoft/TypeScript · GitHub
[go: up one dir, main page]

Skip to content
Discriminated Unions In Switch Statements Don't Respect Destructuring #15889
Closed
@axxag

Description

@axxag

TypeScript Version: 2.3.2

Code

interface Square {
    kind: "square";
    size: number;
}
interface Circle {
    kind: "circle";
    radius: number;
}

type Shape = Square | Circle

const area = (s: Shape) => { //Works
    switch (s.kind) {
        case "square": return s.size * s.size;
        case "circle": return Math.PI * s.radius ** 2;
    }
}

const area = (s: Shape) => {
    const {kind} = s
    switch (kind) {
        case "square": return s.size * s.size; // size doesn't exist on Circle
        case "circle": return Math.PI * s.radius ** 2;  // radius doesn't exist on Square
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    DuplicateAn existing issue was already created

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0