type WithTS = new (...args: any[]) => object;
function TimeStamped<T extends WithTS> (base: T) {
return class extends base{
private data = new Date();
get timeStamp() {
return this.data;
}
}
}
class Asset {
}
class AssetWithTimeStamped extends TimeStamped(Asset) {
constructor() {
super();
}
}
console.log(new AssetWithTimeStamped().timeStamp);