Skip to content

5.0: An opaque type from other modules isn't inferred correctlyΒ #53581

Description

Bug Report

πŸ”Ž Search Terms

  • unique symbol
  • type inference
  • opaque

πŸ•— Version & Regression Information

  • This changed between versions v4.9.5 and v5.0.2
  • The nightly build also has the bug

⏯ Playground Link

Playground (v5.0.2)

πŸ’» Code

declare const tag: unique symbol;
type Tagged<Token> = {
  readonly [tag]?: Token;
};
export type Opaque<Type, Token = unknown> = Type & Tagged<Token>;
export type Query<_V, _R> = Opaque<string>;

const q: Query<{}, {}> = 'query {}'

The opaque type that I borrowed from:

πŸ™ Actual behavior

The type of q is annotated correctly, Query<{}, {}> while the declaration of Query is on the same file. However, when I moved it to another file, the q is inferred as Query<_V, _R>. It is not reproduced on v4.9.5.

πŸ™‚ Expected behavior

The type of q should be inferred as Query<{}, {}> wherever the declaration of Query is located.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions