Skip to content

Readonly<[...unknown[], infer L]> and readonly [...unknown[], infer L] exhibit inconsistent behavior.Β #56888

Closed
@13OnTheCode

Description

@13OnTheCode

πŸ”Ž Search Terms

Readonly<[...unknown[], infer L]> and readonly [...unknown[], infer L] exhibit inconsistent behavior.

πŸ•— Version & Regression Information

⏯ Playground Link

https://www.typescriptlang.org/play?ts=5.3.2#code/C4TwDgpgBAglC8UBKECGATA9gOwDYgB4BtAOjIFdsBrbTAd2yIF0AaKSm+7JgPgFgAUFCgB6EVAB6AfkGDQkKACEEUAE5oseEFFIVqtBszYcD3QcLGSZAueGgAVAIwqiAclSu2rgEaeorgGNXJigIAA9gCGx0AGc1DRx8HQBLbAAzCFUoAAk2MhITLmYQqRyoAC4obAgAN0zzUXFpWQF5BwAmF3c-Hx6gkPDI6LiUDETCIlSMrNyofMLDJl4oUuyKqtr6oUarFraoewBmLo8vXy9+0Iio2PixrR15-SLWKCnMqAAZEq-16rrVA1LM0bK07AcACwnHrnfyXQY3EYJLTEJ6cRZsd5Zb48Fa-Sr-LYWJrWYmwALAcioXCVBbYIHiACiYUgFIg6EqgVcgiAA

πŸ’» Code

type A = Readonly<[...unknown[], unknown]>
  // ^? type A = readonly [...unknown[], unknown]

type B = readonly [...unknown[], unknown]
  // ^? type B = readonly [...unknown[], unknown]

type T1 = ['a', 'b', 'c'] extends readonly [infer H, ...unknown[]] ? H : never
  // ^? type T1 = 'a'

type T2 = ['a', 'b', 'c'] extends Readonly<[infer H, ...unknown[]]> ? H : never
  // ^? type T2 = 'a'

type T3 = ['a', 'b', 'c'] extends readonly [...unknown[], infer L] ? L : never
  // ^? type T3 = 'c'

type T4 = ['a', 'b', 'c'] extends Readonly<[...unknown[], infer L]> ? L : never
  // ^? type T4 = unknown
  // Actual: unknown
  // Expected: 'c'

πŸ™ Actual behavior

πŸ™‚ Expected behavior

Infer the correct type.

Additional information about the issue

No response

Metadata

Metadata

Assignees

Labels

BugA bug in TypeScriptFix 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