Untitled

mail@pastecode.io avatar
unknown
typescript
a year ago
969 B
3
Indexable
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
 */