Skip to content

never extends ${infer P} yield a different result than never extends ${infer P}/Β #50215

Open
@tylim88

Description

@tylim88

Bug Report

πŸ”Ž Search Terms

never extends ${infer P} yield different result than never extends ${infer P}/

πŸ•— Version & Regression Information

TS 4.7

type is not what expected

⏯ Playground Link

playground

πŸ’» Code

type a = never extends `${infer P}` ? P : 1  // never
//   ^?
type b = never extends `${infer P}/` ? P : 2 // string
//   ^?

type a1 = never extends `${infer P extends string}` ? P : 1 // never
//   ^?
type b1 = never extends `${infer P extends string}/` ? P : 2 // string
//   ^?

type a2 = never extends `${infer P extends number}` ? P : 1 // never
//   ^?
type b2 = never extends `${infer P extends number}/` ? P : 2 // number
//   ^?

type a3 = never extends `${infer P extends null}` ? P : 1 // never
//   ^?
type b3 = never extends `${infer P extends null}/` ? P : 2 // null
//   ^?

type a4 = never extends `${infer P extends undefined}` ? P : 1 // never
//   ^?
type b4 = never extends `${infer P extends undefined}/` ? P : 2 // undefined
//   ^?

type a5 = never extends `${infer P extends boolean}` ? P : 1 // never
//   ^?
type b5 = never extends `${infer P extends boolean}/` ? P : 2 // boolean
//   ^?

type a6 = never extends `${infer P extends bigint}` ? P : 1 // never
//   ^?
type b6 = never extends `${infer P extends bigint}/` ? P : 2 // bigint
//   ^?

πŸ™ Actual behavior

  1. never extends ${infer P}/ yield the same result as never extends ${infer P}
  2. never extends ${infer P extends X}/ yield X but never extends ${infer P extends X} always yield never

πŸ™‚ Expected behavior

  1. never extends ${infer P}/ should yield never like never extends ${infer P}
  2. never extends ${infer P extends X}/ yield never like never extends ${infer P extends X}

are these intended behaviors? kind of unintuitive

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugA bug in TypeScript

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions