Skip to content

Exclude type not preventing to pass "excluded" types #22822

@lazywithclass

Description

@lazywithclass

TypeScript Version: 2.8.0-dev.20180322

Code

I am experimenting with the Exclude type introduced here #21847.

What I would like is to create a type that includes all strings except for "", I thought something like this would work:

type NonEmptyString = Exclude<string, "">;
function test(s: NonEmptyString) {}
test("");

so I was expecting an error, but no, it compiles fine. Also test("a"); compiles fine. I didn't get the reason why, I've asked on gitter and it looks like this code should give a compile error.

Expected behavior: I think a compiler error should be shown, but I'm really new with TypeScript, so it might easily be an error on my side

Actual behavior: No compiler error, both with test("") and test("a")

Metadata

Metadata

Assignees

No one assigned

    Labels

    DuplicateAn existing issue was already created

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions