Почему я не могу использовать эту внутреннюю функцию?

#typescript #typescript-decorator

#typescript #typescript-декоратор

Вопрос:

Код:

 const f: any = function(...args: any[]) {
    const a = this;
};
 

Ошибка:

 semantic error TS2683 'this' implicitly has type 'any' because it does not have a type annotation.
 

Комментарии:

1. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

2. @ritaj этого нет в функции со стрелкой…

Ответ №1:

У вас noImplicitThis включена опция компилятора, и в новой f функции this выражение неявно имеет тип any — отсюда и ошибка.

Чтобы исправить это — просто укажите тип явно, используя параметр «fake» this :

 const f: any = function(this: typeof target, ...args: any[]) {
    // ...
};
 

По умолчанию тип this внутри функции — any . Начиная с TypeScript 2.0, вы можете указать явный параметр this . эти параметры являются поддельными параметрами, которые идут первыми в списке параметров функции