2016-12-28 114 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'类型的错误。不知道如何给这个类型也是 –