Files
tsbundle/test/ts_web/fixture-decorators.ts
T

36 lines
925 B
TypeScript

// Test file to verify decorator functionality
const decoratedClasses: Function[] = [];
function trackClass(value: Function, _context: ClassDecoratorContext) {
decoratedClasses.push(value);
}
function logMethod(method: Function, context: ClassMethodDecoratorContext) {
const methodName = String(context.name);
return function (this: any, ...args: any[]) {
console.log(`Calling method: ${methodName}`);
return method.apply(this, args);
};
}
@trackClass
class TestClass {
name = 'test';
@logMethod
modify() {
this.name = 'modified';
}
}
// Test that the class decorator worked
const instance = new TestClass();
console.log('Initial name:', instance.name);
console.log('Class was decorated:', decoratedClasses.includes(TestClass));
// Test that the method decorator worked
instance.modify();
console.log('Modified name:', instance.name);
console.log('Decorator test completed successfully!');