Переменная 'Foo' использовалась до объявления. Взаимозависимость двух классов - PullRequest
0 голосов
/ 29 октября 2018

Пожалуйста, помогите мне решить проблему.

"no-use-before-declare" в tslint.json равно true. И мне не разрешено это менять.

Проблема в следующем - ошибка построения «переменной« foo », используемой перед объявлением».

Код может быть упрощен до:

export class One {
    toSecond() : Two {
        return new Two();
    }
}

export class Two {
    toFirst() : One {
        return new One();
    }
}

Можно ли его как-то взломать, чтобы преодолеть предупреждение о задержке и получить тот же результат. Есть обходной путь?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Вы можете сделать:

let Two_forward: typeofTwo;

export class One {
    toSecond() : Two {
        return new Two_forward();
    }
}

export class Two {
    toFirst() : One {
        return new One();
    }
}
// Work around https://github.com/palantir/tslint/issues/3655
type typeofTwo = typeof Two;
Two_forward = Two;

но IMO это неоправданно по сравнению с просто подавлением ошибки ворса с // tslint:disable-next-line:no-use-before-declare. (И, возможно, потребуются дальнейшие изменения, если предложенный вариант strictLocalInitialization здесь станет частью strict.)

0 голосов
/ 29 октября 2018

Ранее это было зарегистрировано как ошибка на tslint , и было решено, что классы не поднимаются и не могут использоваться до объявления. В этом случае правило верно.

...