есть класс
export interface IMyClass {
requiredMethod(): void;
}
class MyClass implements IMyClass {
@AppendHelix()
method1(): string {
return 'my-string';
}
@AppendHelix()
method2(): number {
return Number.EPSILON;
}
requiredMethod(): void { };
}
есть декоратор
export function AppendHelix(): MethodDecorator {
return function AppendHelixDecorator<T>(
target: any,
propertyKey: string | symbol,
descriptor: TypedPropertyDescriptor<T>
): TypedPropertyDescriptor<T> {
const originMethod = target[propertyKey];
return {
value() {
const origResult = originMethod.apply(this);
return 'helix ' + origResult;
},
} as any as TypedPropertyDescriptor<T>;
};
}
Задача: описать типы декоратора так, чтобы
@AppendHelix()
method2(): number {
return Number.EPSILON;
}
вызывало ошибку компиляции, т.е. чтобы декоратор мог накладываться только на методы с определенной сигнатурой, в данном случае возвращающие string