Декораторы в машинописи выбрасывают ошибку компиляции - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь протестировать декораторы в машинописном тексте, но когда я компилирую код ts, я получаю сообщение об ошибке

error TS1241: Unable to resolve signature of method decorator when called as an expression.

error TS1219: Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option to remove this warning.

У меня правильно настроен декоратор в tsconfig.json

{
  "compilerOptions": {
      "target"                  : "ES5",
      "experimentalDecorators"  : true,
      "emitDecoratorMetadata"   : true
  }
}

Iперепробовал все вещи, найденные в интернете, чтобы исправить это, но ошибка не происходит

tsc версия 3.4.2

Как в одном посте, проблема заключается в том, что при компиляции кода OS TS, когда вызывается декоратор,он вызывается с одним меньшим аргументом

__decorate([
        f()
    ], C.prototype, "ffolow");

, а класс, который использует декоратор, является

class C {

  @f()
  ffolow() {
    console.log("FF called")
  }

}

1 Ответ

0 голосов
/ 02 октября 2019

Это зависит от того, как определен ваш декоратор. Предполагая, что это просто «обычный» декоратор (не фабрика декораторов), тогда вы должны применить его без скобок:

function f(target: any, propertyName: string, descriptor: PropertyDescriptor) {
  //
}

class C {

  @f
  ffolow() {
    console.log("FF called")
  }

}
...