Задать вопрос
Vadimir200017
@Vadimir200017
Закончил колледж и ищу работу.

Почему не удаётся создать декоратор метода в typescript?

Я практиковался в изучении typescript и не могу создать декоратор для метода класса
function LogClass(constructor: Function) {
  console.log(constructor.name)
}

function LogMethod(
  target: any,
  key: string,
  descriptor: PropertyDescriptor
) {
  console.log(target, key, descriptor)
}

@LogClass
class Plane {
  private id: number

  constructor(id: number) {
    this.id = id
  }

  @LogMethod
  getId() {
    return this.id
  }
}


Возникает вот такая ошибка:

Не удается разрешить сигнатуру декоратора метода при вызове в качестве выражения.
Среда выполнения вызовет декоратор с аргументами 2 , но декоратор ожидает 3 .ts(1241)
main.ts(8, 3): Не указан аргумент для "descriptor".


Версия typescript 5.8.3, пробовал менять на 4 но не помогло. Подскажите, пожалуйста, в чём проблема?
  • Вопрос задан
  • 38 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
floorage_jscode
@floorage_jscode
Понравился ответ? Отметь решением!
function LogClass(constructor: Function) {
console.log(`result: ${constructor.name}`);
}

function LogMethod(
target: Object,
propertyKey: string,
descriptor: PropertyDescriptor
) {
console.log(`result:`, target, propertyKey);
}

@LogClass
class Plane {
private id: number;

constructor(id: number) {
this.id = id;
}

@LogMethod
getId() {
return this.id;
}
}

const plane = new Plane(123);
console.log(plane.getId());
Ответ написан
@dim5x
ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
В tsconfig.json включить опцию experimentalDecorators.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы