当前位置: 首页 > 知识库问答 >
问题:

添加新的知名符号属性,如TypeScript中的Symbol.my属性

楚嘉纳
2023-03-14

在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)

如何将属性添加到Symbol,以使TypeScript满意?

共有1个答案

公西永嘉
2023-03-14

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

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

现在可以定义属性:

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

// TypeScript is now happy:
Symbol.hello;
 类似资料:
  • 问题内容: 是否可以向Java系统属性添加新值。如果有的话,如何在Java系统属性中引入具有相应值的新键。 问题答案: 无论是或使用国旗当您启动JVM

  • 问题内容: 如何在jQuery中的特定HTML标签中添加属性? 例如,像下面这样的简单HTML: 然后添加一个属性disable =“ true”,如下所示: 问题答案: 您可以像这样添加属性: 但是,对于和这样的DOM属性,正确的方法(从JQuery 1.6开始)是使用。

  • 问题内容: 我正在使用JSON将一些值从外部源获取到变量中。 我有一个这样的类型,将值放入: 解组后,我可以通过以下方式访问类型: 但是如果我尝试做类似的事情: 编译器抱怨没有这样的值。 所以我的问题是,我如何根据某些条件引用我知道会存在的Go属性? 做到这一点: 但这不是很灵活,因为我将收到不同的。 问题答案: 会尽力将数据放置在最适合您的类型的位置。从技术上讲,您的第一个示例将起作用,但是即使

  • 我是网络开发新手,所以这可能是非常基本的。如果datainfo prop变量不是空的,我想向div标记添加一个数据属性 但是现在,如果datavalue是空的,则data属性会添加一个空值。相反,我希望它根本不会出现在div标签中。 我可以在JSX子句中添加整个内容吗?

  • 我想向云Firestore中已存在的对象添加新的属性 如您所见,我只是向一个对象添加了新属性。 现在这段代码每次都用旧属性覆盖新属性。