【问题标题】:Add new well-known symbol property like Symbol.myProperty in TypeScript在 TypeScript 中添加新的知名符号属性,例如 Symbol.myProperty
【发布时间】:2021-11-05 16:38:03
【问题描述】:

在 JavaScript 中,Symbol 对象上有全局符号,例如 Symbol.iteratorSymbol.match

我可以通过擦除 any 的类型来分配属性,但是 TypeScript 无法识别它。

// Define Symbol.hello
(Symbol as any).hello = Symbol("hello");

// Try using it later:
Symbol.hello;
// TypeScript error: Property 'hello' does not exist on type 'SymbolConstructor'.ts(2339)

如何以让 TypeScript 满意的方式将我的属性添加到 Symbol

【问题讨论】:

  • 你的问题是什么?
  • 已添加“如何以使 TypeScript 满意的方式将我的属性添加到 Symbol?”。这能解释清楚吗?

标签: javascript typescript symbols


【解决方案1】:

您可以在SymbolConstructor 接口上声明您的属性:

declare global {
  interface SymbolConstructor {
      readonly hello: symbol;
  }
}

您现在可以定义您的属性:

// Define Symbol.hello
(Symbol as { hello: symbol }).hello = Symbol("hello");

// TypeScript is now happy:
Symbol.hello;

【讨论】:

    猜你喜欢
    • 2017-04-24
    • 2018-12-05
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多