我明白了 返回类型不可关联
中的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)
答案 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(使用可选参数)