Storage.prototype.setObject声明类型

时间:2016-12-28 07:00:51

标签: typescript

我正在努力为以下dom功能

写一个d.ts
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存储定义类型?

vscode

error

1 个答案:

答案 0 :(得分: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);
}