gpt4 book ai didi

javascript - 在 typescript 中使用 ES6 符号

转载 作者:搜寻专家 更新时间:2023-10-30 21:05:50 25 4
gpt4 key购买 nike

我正在尝试运行这行简单的代码 —

let FUNJECTOR_KEY = Symbol.for('funjector')

但我不断收到错误消息 — 找不到名称“Symbol”。我是 typescript 的新手,所以我不确定是否需要包含某些内容?

在我的例子中,我不想使用此处解释的多边形填充 — Using es-6 symbols in typescript

最佳答案

TypeScript 编译器将 TS 转译为 JS。 TSC 在 es5 模式下找不到 Symbol 的声明。所以你的错误纯粹是在编译时。您不需要运行时的 polyfill。

要解决这个问题,您可以将编译目标更改为 es6,以便在标准库中定义 Symbol。或者您可以手动添加定义 ( source )。

declare class Symbol {
/** Returns a string representation of an object. */
toString(): string;

/** Returns the primitive value of the specified object. */
valueOf(): Object;

/**
* Returns a new unique Symbol value.
* @param description Description of the new Symbol object.
*/
constructor(description?: string);

/**
* Returns a Symbol object from the global symbol registry matching the given key if found.
* Otherwise, returns a new symbol with this key.
* @param key key to search for.
*/
static for(key: string): Symbol;

/**
* Returns a key from the global symbol registry matching the given Symbol if found.
* Otherwise, returns a undefined.
* @param sym Symbol to find the key for.
*/
static keyFor(sym: Symbol): string;
}

// Well-known Symbols
declare module Symbol {
/**
* A method that determines if a constructor object recognizes an object as one of the
* constructor’s instances.Called by the semantics of the instanceof operator.
*/
const hasInstance: Symbol;

/**
* A Boolean value that if true indicates that an object should be flatten to its array
* elements by Array.prototype.concat.
*/
const isConcatSpreadable: Symbol;

/**
* A Boolean value that if true indicates that an object may be used as a regular expression.
*/
const isRegExp: Symbol;

/**
* A method that returns the default iterator for an object.Called by the semantics of the
* for-of statement.
*/
const iterator: Symbol;

/**
* A method that converts an object to a corresponding primitive value.Called by the
* ToPrimitive abstract operation.
*/
const toPrimitive: Symbol;

/**
* A String value that is used in the creation of the default string description of an object.
* Called by the built- in method Object.prototype.toString.
*/
const toStringTag: Symbol;

/**
* An Object whose own property names are property names that are excluded from the with
* environment bindings of the associated objects.
*/
const unscopables: Symbol;
}

警告: 某些类型检查不适用于 symbol。例如,您不能在接口(interface)上声明计算为符号的属性。

关于javascript - 在 typescript 中使用 ES6 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36244774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com