我想使用符号向es6 Set添加filter
方法。该方法应该类似于Array.prototype.filter。我不知道如何编写类型定义文件。这在.d.ts文件中不起作用:
const filterSymbol = Symbol()
interface Set {
[filterSymbol]: any
}
我得到的错误是无法将filterSymbol分配给符号。
Error:(1, 19) TS1254: A 'const' initializer in an ambient context must be a string or numeric literal.
我想创建此类型,以便将Set.prototype [filterSymbol]作为本地标准库的一部分。所以它就像是对lib.es6.d.ts的补充。
当然,该方法的实施将是:
Object.defineProperties(Set.prototype, {
[ filterSymbol ]: {
value: function <T> (this: Set<T>, f: (element: T) => boolean): Set<T> {
return new Set([ ...this ].filter(f))
}
}
})
答案 0 :(得分:0)
我必须使用declare
和Typescript 2.7功能unique symbol
:
declare const filterSymbol = unique symbol
interface Set {
[filterSymbol]: any
}