ReSharper:Typescript错误返回类型不可关联

时间:2018-01-26 07:16:51

标签: typescript resharper

我明白了 返回类型不可关联

  

重载签名与函数定义不兼容:返回   类型不相关

中的ReSharper插件出现

错误

public getCache<T>(key: string): T;
public getCache<T>(key: string, defaultValue: T): T;
public getCache<T>(key: string, defaultValue?: T): T
{
    const result = localStorage.getItem(key);
    return result ? JSON.parse(result) as T : defaultValue;
}

TypeScript代码。

我明白为什么。第一次过载中的通用参数T与第二次过载中的T没有任何共同之处。我可以写

public getCache<T1>(key: string): T1;
public getCache<T2>(key: string, defaultValue: T2): T2;
public getCache<T>(key: string, defaultValue?: T): T
{
    const result = localStorage.getItem(key);
    return result ? JSON.parse(result) as T : defaultValue;
}

这个问题有解决办法吗? 我的ReSharper版本是2017.3(15.5.27130.2024)

enter image description here

1 个答案:

答案 0 :(得分:1)

由于TypeScript具有可选参数,因此在这种情况下过载没有意义。只需使用最后一个签名,这是最通用的签名,并涵盖其他案例:

public getCache<T>(key: string, defaultValue?: T): T
{
    const result = localStorage.getItem(key);
    return result ? JSON.parse(result) as T : defaultValue;
}

请参阅https://www.typescriptlang.org/docs/handbook/declaration-files/do-s-and-don-ts.html(使用可选参数)