Prevent part of Typescript code to be compiled -


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> {} 

(code in playground)

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); 

(code in playground)