Remove the @spina decorator on abstract classes.
Review Request #13738 — Created April 16, 2024 and submitted — Latest diff uploaded
BaseVisibilityActionView
was decorated with@spina
, which isn't
technically allowed.
@spina
should only be applied to classes that can be instantiated. For
abstract classes, we either want to use the parent class's Spina
information or usespinaBaseClassExtends
to define a new top-level
class.It seems that, by and large, decorators can't be used with abstract
classes. When compiling, we get basically:const foo = abstract class Foo {}
This is a syntax error in JavaScript.
The reason we didn't encounter this problem before is that Babel was
stripping out theabstract
when it processed the TypeScript and
compiled to JavaScript. The TypeScript compiler leaves it in, in order
to try to wrap it in a decorator.Going forward, we'll need to be careful not to decorate these classes.
Unit tests pass.
Verified that this no longer broke the build when compiled via
ESBuild and Storybook.