abstract class Command { private readonly _name : string ; protected constructor ( name ) { this . _name = name ; } register ( ) { RegisterCommand ( this . _name , ( source , args , rawCommand ) => { this . execute ( source . toString ( ) , args , rawCommand ) ; } , false ) ; } protected abstract execute ( source , args , rawCommand ) ; } export default Command ;