2016-12-28 113 views
0

我很努力寫以下DOM功能Storage.prototype.setObject聲明類型

Storage.prototype.setObject = function(key:string, value:any) { 
    this.setItem(key, JSON.stringify(value)); 
} 

Storage.prototype.getObject = function(key:string) { 
    var value = this.getItem(key); 
    return value && JSON.parse(value); 
} 

我應該如何擴展默認的DOM存儲類型定義爲以下一個d.ts

vscode

error

回答

2

你只需要擴展Storage接口:

interface Storage { 
    setObject<T>(key:string, value:T):void; 
    getObject<T>(key:string):T; 
} 

用於指定功能的this類型,你可以用假this參數(應該是第一個):

Storage.prototype.setObject = function(this:Storage, key:string, value:any) { 
    this.setItem(key, JSON.stringify(value)); 
} 

Storage.prototype.getObject = function(this:Storage, key:string) { 
    var value = this.getItem(key); 
    return value && JSON.parse(value); 
} 
+0

謝謝! ps有關如何將類型註釋分配給'this'的任何提示。 –

+0

抱歉沒有得到您的問題。你怎麼指定一個類型註釋到this_? –

+0

添加存儲接口後僅剩的兩個錯誤是兩個'this'類型的錯誤。不知道如何給這個類型也是 –