Skip to content

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

@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 TypeScriptDomain: Conditional TypesThe issue relates to conditional types

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions