Skip to content

narrowing doesn't work #11433

Closed
Closed
@zpdDG4gta8XKpMCd

Description

@zpdDG4gta8XKpMCd

latest nightly build as of October 6, 2016:

interface A { kind: 'A'; a: number; }
interface B { kind: 'B'; b: number; }
type AB = A | B;
export function toResult<Z extends { kind: K; }, K extends string>(
    value: AB | Z,
    orElse: (value: Z) => number
): number {
    switch (value.kind) {
        case 'A': return value.a; // <-- problem, value isn't narrowed to A
        case 'B': return value.b;
        default: return orElse(value);
    }
}

Metadata

Metadata

Assignees

Labels

BugA bug in TypeScript

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions