gleam-lang/gleam

Invalid TypeScript Declarations for property named `constructor` and other javascript keywords

Open

#5.613 geöffnet am 16. Apr. 2026

Auf GitHub ansehen
 (1 Kommentar) (0 Reaktionen) (0 zugewiesene Personen)Rust (21.417 Stars) (960 Forks)batch import
good first issuehelp wantedhigh priority

Beschreibung

Given this gleam code:

pub type Box {
  Box(constructor: Int)
}

And this gleam.toml:

name = "app"
version = "1.0.0"

target = "javascript"

[dependencies]
gleam_stdlib = ">= 0.44.0 and < 2.0.0"

[dev_dependencies]
gleeunit = ">= 1.0.0 and < 2.0.0"

[javascript]
typescript_declarations = true

The generated typescript declarations are invalid with the following error:

Similarly when you use other property names such as prototype or then, the generated typescript declarations are valid, however do not match the generated JavaScript classes.

For example:

pub type Box {
  Box(prototype: Int)
}
export class Box extends $CustomType {
  constructor(prototype) {
    super();
    this.prototype$ = prototype;
  }
}
export class Box extends _.CustomType {
  /** @deprecated */
  constructor(prototype: number);
  /** @deprecated */
  prototype: number;
}

Here the typescript autocompletion would suggest box.prototype even though it should be box.prototype$.

Maybe this is not important, because they are deprecated, but wanted to bring it up anyways.

This is on gleam 1.15.4

Contributor Guide