noUnusedLocals не работает в функции * - PullRequest
0 голосов
/ 14 мая 2018

Опции компилятора: "noUnusedLocals": правда, "noUnusedParameters": правда, не работает в функциях. Например, я получил сообщение об ошибке:

export class AllReduxSagas {

[ts] Свойство 'someService' объявлено, но его значение никогда не читается.

    constructor(private someService: SomeService) {} 

      watchSaga = function* watchSaga() {
        yield takeEvery(ACTION_TYPE.SOME_ACTION, this.someSaga, this.someService);
      };
...
}

someService не распознается компилятором, но когда я удаляю опции компилятора, описанные выше - все работает нормально. Почему это происходит и как решить эту проблему.

1 Ответ

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

Проблема в том, что watchSaga не является функцией-членом класса, это поле, которое имеет значение функции.Таким образом, this внутри функции watchSaga не обязательно ссылается на содержащий класс (this будет напечатано как any внутри функции)

Рассмотрите возможность сделать функцию функцией-членом:

export class AllReduxSagas {
    constructor(private someService: SomeService) { }

    *watchSaga() {
        yield this.someService;
    };
}

Или, если по какой-то причине вы хотите придерживаться поля с синтаксисом функции типа, вы можете явно набрать this (хотя это не обязательно означает, что переданный this будет экземпляромкласс, это все еще function, а не => функция стрелки)

watchSaga = function* watchSaga(this: AllReduxSagas) {
    yield this.someService;
};
...