错误TS2339:属性'条目'类型' FormData'

时间:2018-06-04 09:54:57

标签: angular typescript tslint

我在Stackoverflow上搜索并在网上找到了这个帖子https://github.com/Microsoft/TypeScript/issues/14813,但它并没有解决我的问题。我在使用ng serve --watch编译代码时遇到此错误。

  

错误TS2339:属性'条目'类型' FormData'。

上不存在

这部分fd.entries()触发了错误......任何想法在这里发生了什么?

onFileSelected(event) {
    const fd = new FormData;

    for (const file of event.target.files) {
        fd.append('thumbnail', file, file.name);

        const entries = fd.entries();
        // some other methods are called here e. g. upload the images

        for (const pair of entries) {
            fd.delete(pair[0]);
        }
    }
}

我看到那里(https://github.com/Microsoft/TypeScript/blob/master/src/lib/dom.iterable.d.ts)是entries的某个界面,但不知怎的,这对我不起作用。

修改

我的tsconfig.json看起来像这样

{
    "compileOnSave": false,
    "compilerOptions": {
        "outDir": "./dist/out-tsc",
        "sourceMap": true,
        "declaration": false,
        "moduleResolution": "node",
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "target": "es5",
        "typeRoots": [
            "node_modules/@types"
        ],
        "lib": [
            "es2017",
            "dom"
        ]
    }
}

4 个答案:

答案 0 :(得分:2)

除非您正在编译ES6,否则TypeScript不支持它。

2.1.300-rc1-008673

如果是es6,那么它将起作用。

答案 1 :(得分:1)

所有浏览器都不支持方法entries。如果您仍然想要使用该方法,并且仍然将目标设置为es5,则可以extend当前界面

declare global {
  interface FormData {
    entries(): Iterator<[USVString, USVString | Blob]>;
  }
}

答案 2 :(得分:1)

您需要在-ObjectId的{​​{1}}列表中添加“ dom.iterable”,例如:

lib

答案 3 :(得分:-1)

只需使用 Object().entries(() => ) 语法。