microsoft/TypeScript-TmLanguage

String Literal Param in Default Type Definition in Interface Function Causes Breakage

frank-weindel opened this issue · 1 comments

Code

let var1;

interface MyInterface {
  func<T = Lowercase<'StringLiteral'>>(): T;
}

let var2;

JavaScript and TypeScript Nightly version: 5.6.0-dev.20240623

Screenshot 2024-06-24 at 12 33 28 PM

Breakage continues for many other keywords at the same block level such as: let, const, export, for, while, interface etc. class itself seems to overcome the breakage.

I've confirmed this also occurs with double quoted " string literal types and number literal types. As well as when the extends keyword is used.

let var1;

interface MyInterface {
  func1<T = Lowercase<'StringLiteral'>>(): T;
  func2<T = Lowercase<"StringLiteral">>(): T;
  func3<T = Lowercase<123>>(): T;
}

let var2;
let var1;

interface MyInterface {
  func1<T extends Lowercase<'StringLiteral'>>(): T;
  func2<T extends Lowercase<"StringLiteral">>(): T;
  func3<T extends Lowercase<123>>(): T;
}

let var2;