// Test file to verify decorator functionality function sealed(constructor: Function) { Object.seal(constructor); Object.seal(constructor.prototype); } @sealed class TestClass { name = 'test'; modify() { this.name = 'modified'; } } // Test that the class is sealed const instance = new TestClass(); console.log('Initial name:', instance.name); // This should work (modifying existing property) instance.modify(); console.log('Modified name:', instance.name); // This should fail silently in non-strict mode or throw in strict mode try { (instance as any).newProperty = 'should not work'; console.log('Adding new property:', (instance as any).newProperty); } catch (e) { console.log('Error adding property (expected):', e.message); } // Test that we can't add to prototype try { (TestClass.prototype as any).newMethod = function() {}; console.log('Prototype is NOT sealed (unexpected)'); } catch (e) { console.log('Prototype is sealed (expected)'); } console.log('Is TestClass sealed?', Object.isSealed(TestClass)); console.log('Is TestClass.prototype sealed?', Object.isSealed(TestClass.prototype));