i have class , class b, extends class a. class has method accepts aproperties enum first argument. class b has same method accepts aproperties or bproperties enum first argument.
enum aproperties { x, y } enum bproperties { z, w } class { setproperty(property: aproperties, value: number) { } } class b extends { setproperty(property: aproperties | bproperties, value: number) { } } setproperty method of class b added typescript editor know method can accept both aproperties , bproperties. when compiled javascript, having setproperty in classb doesn't make sense 100% identical classa method.
is there way prevent method compiled in javascript? guess comment before method job.
i don't think there's way of asking compiler skip on code without commenting out, can design things bit differently , avoid need add implementation of method in child class:
enum aproperties { x, y } enum bproperties { z, w } class base<t> { setproperty(property: t, value: number) { // ... } } class extends base<aproperties> {} class b extends base<aproperties | bproperties> {} this approach adds class (base) has implementation of setproperty , happens once, , in a , b declare type of property enum.
there's discussion/suggestion have default generic types (when it's implemented) make easier, like:
class a<t = aproperties> { setproperty(property: t, value: number) {} } class b extends base<aproperties | bproperties> {} but you'll need base class.
edit
i thought of solution, you'll better doesn't require other class (base):
interface base<t> { setproperty(property: t, value: number); } class implements base<aproperties> { setproperty(property: aproperties, value: number) { // ... } } class b implements base<aproperties | bproperties> { setproperty: (property: aproperties | bproperties, value: number) => void; } let = new a(); a.setproperty(aproperties.x, 4); let b = new b(); b.setproperty(aproperties.x, 4); b.setproperty(bproperties.w, 4);