Skip to content

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

Open
@SeokminHong

Description

@SeokminHong

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugA bug in TypeScriptDomain: Quick Infoe.g. hover text, tool-tips, and tooltips.Help WantedYou can do this

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions