Skip to content

Some code became broken in 4.7Β #49338

@HanabishiRecca

Description

@HanabishiRecca

Bug Report

πŸ”Ž Search Terms

4.7

πŸ•— Version & Regression Information

Such code became broken in 4.7. It works as expected in 4.6.

⏯ Playground Link

4.6 example

4.7 example

πŸ’» Code

type TypesMap = {
    [0]: { foo: 'bar'; };
    [1]: { a: 'b'; };
};

type P<T extends keyof TypesMap> = { t: T; } & TypesMap[T];

type TypeHandlers = {
    [T in keyof TypesMap]?: (p: P<T>) => void;
};

const typeHandlers: TypeHandlers = {
    [0]: (p) => console.log(p.foo),
    [1]: (p) => console.log(p.a),
};

const onSomeEvent = <T extends keyof TypesMap>(p: P<T>) =>
    typeHandlers[p.t]?.(p);

Also it works in 4.7 with optional (?) removed from TypeHandlers index.

πŸ™ Actual behavior

The code won't compile.

πŸ™‚ Expected behavior

The code should compile.

Metadata

Metadata

Assignees

No one assigned

    Labels

    DuplicateAn existing issue was already createdFix AvailableA PR has been opened for this issue

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions