Ошибка TS2339: свойство «записи» не существует для типа «FormData» - PullRequest
0 голосов
/ 04 июня 2018

Я искал в Stackoverflow и в Интернете, я нашел эту ветку https://github.com/Microsoft/TypeScript/issues/14813, но она не решает мою проблему.Я сталкиваюсь с этой ошибкой при компиляции моего кода с ng serve --watch.

Ошибка TS2339: свойство 'entry' не существует для типа '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"
        ]
    }
}

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Метод entries поддерживается не всеми браузерами.Если вы хотите использовать метод в любом случае, и при этом цель установлена ​​на es5, вы можете продлить текущий интерфейс

declare global {
  interface FormData {
    entries(): Iterator<[USVString, USVString | Blob]>;
  }
}
0 голосов
/ 04 июня 2018

TypeScript не поддерживает его, если вы не компилируете в ES6.

"target": "es5"

Если это es6, то он будет работать.

...