interface Implementation { bar : string ; } class Clazz implements Implementation { bar : string ; protected foo : string ; constructor ( public myName ) { this . foo = myName . toUpperCase ( ) ; } method ( ) { return true ; } get value ( ) { return this . foo ; } static method ( ) { return 'wow, cool' ; } } var c = new Clazz ( 'hello' ) ; c . myName ; c . value ; Clazz . method ( ) ; class SubClazz extends Clazz { constructor ( ) { super ( 'wow' ) ; console . log ( this . foo ) ; } } SubClazz . method ( ) ;