class TimeLimitedCache {
ourMap : Map<number,number>;
constructor() {
this.ourMap = new Map();
}
set(key: number, value: number, duration: number): boolean {
let timeOutid:ReturnType<typeof setTimeout>;
if(this.ourMap.has(key)) {
clearTimeout(timeOutid);
this.ourMap.set(key,value);
timeOutid = setTimeout(()=>{this.ourMap.delete(key)},duration);
return true;
}
else {
this.ourMap.set(key,value);
timeOutid = setTimeout(()=>{this.ourMap.delete(key)},duration);
return false;
}
}
get(key: number): number {
if(this.ourMap.has(key)) return this.ourMap.get(key);
else return -1;
}
count(): number {
return this.ourMap.size;
}
}
/**
* Your TimeLimitedCache object will be instantiated and called as such:
* var obj = new TimeLimitedCache()
* obj.set(1, 42, 1000); // false
* obj.get(1) // 42
* obj.count() // 1
*/