TS2322: тип «Файл» не может быть назначен типу «Тип файла» - PullRequest
0 голосов
/ 16 мая 2018

TS2322: Тип «Файл» нельзя назначить типу «Тип файла». Свойство «прототип» отсутствует в типа «Файл».

Я получаю эту ошибку. Я не знаю, почему я это понимаю, и я не знаю, как это решить. Если бы кто-то был так любезен, чтобы помочь мне, я был бы очень благодарен!

У меня есть свойство публичного класса:

registry = File;

Функция getRegistryFile:

private async getRegistryFile(): Promise<File> {
        if (this.files === undefined || this.files.length === 0) {
            return Promise.reject('No files where returned from the server.');
        }

        const registryFileName = await this.createRegistryFileName();

        this.files.forEach((element) => {
            if (element === registryFileName) {
                console.log('File registry found.');
                return Promise.resolve(element);
            }
        });
    }

И функция, которую я строил:

public WorkInProgress(file: File) {
    this.getRegistryFile().then((file) => this.registry = file);
}

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

См. Рецензию от @artem: должно быть registry: File, а не registry = File Кроме того, вы не можете вернуть значение из Array.forEach() (вы пытаетесь вернуть обещание), вместо этого сделайте это следующим образом:

private async getRegistryFile(): Promise<File> {
    if (this.files === undefined || this.files.length === 0) {
        return Promise.reject('No files where returned from the server.');
    }

    const registryFileName = await this.createRegistryFileName();

    for (let element of this.files) { // replaced Array.forEach with for-of loop
        if (element === registryFileName) {
            console.log('File registry found.');
            return Promise.resolve(element);
        }
    };
    return Promise.reject(new Error("File not found"));
}
0 голосов
/ 16 мая 2018

У меня есть свойство публичного класса:

registry = File;

Является ли это объявлением свойства registry, которое должно иметь тип File? Тогда это должно быть

registry: File;

Или это инициализация свойства, содержащего File конструктор класса? Тогда его тип действительно typeof File, и его нельзя использовать как экземпляр File.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...