我可以在Typescript中使用新的ECMA6数组方法,例如find()
和includes()
吗?它们似乎有效,尽管编译器说:
error TS2339: Property 'find' does not exist on type 'User[]'.
The documentation暗示它应该在说
时起作用TypeScript支持JavaScript中的新功能,例如支持 基于类的面向对象编程。
那为什么会给我一个错误?
答案 0 :(得分:2)
您需要确保target
中的tsconfig.json
设置为"ES6"
:
"target": "ES6" // under "compilerOptions"
这将使find(..)
包含Array<T>
// test.ts
var a: number[];
a.find(n => n === 3);
{/ 1}}。
示例强>
tsc test.ts --target ES6 // ok
tsc test.ts --target ES5 // error: Property 'find' does not exist on type 'number[]'
然后编译:
interface Array<T> {
find(predicate: (value: T, index: number, obj: Array<T>) => boolean, thisArg?: any): T;
}
<强>填充工具强>
如果您不想定位ES6而是使用polyfill,则可以将其添加到代码使用的定义文件中:
"DependsOn": "AttachGateway"