FFKL
1/16/2020 - 7:18 PM

Example of mixins usage.

Example of mixins usage.

type Constructor <T = {}> = new(...args: any[]) => T;

function Timestamped <TBase extends Constructor> (Base: TBase) {
  return class extends Base {
    timestamp = Date.now();
  };
}

function Restorable <TBase extends Constructor> (Base: TBase) {
  return class extends Base {
    restore() {
      console.log('restored');
    }
  }
}

class Connection {
  status: string;
}

const RestorableConnection = Restorable(Connection);
const TimestampedRestorableConnection = Timestamped(RestorableConnection);

new TimestampedRestorableConnection().restore();