gleam-lang/gleam

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

已關閉

#5,613 建立於 2026年4月16日

 (1 則留言) (0 個反應) (0 位負責人)Rust (960 個分叉)batch import
good first issuehelp wantedhigh priority

倉庫指標

星標
 (21,417 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

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

貢獻者指南