我尝试使用特定的库(查询字符串)但是当我注意到'解析'函数给我一个任何类型我决定更新类型定义以添加泛型。
所以,我去了DefinitelyTyped存储库,分叉它,并更新了这个定义
export function parse(str: string, options?: ParseOptions): any;
到
export function parse<T>(str: string, options?: ParseOptions): T;
但是,当我尝试编译时,我收到了这个错误:
https://github.com/Microsoft/dtslint/blob/master/docs/no-unnecessary-generics.md
有人可以向我解释一下吗?我真的不明白它为什么会出问题?我真的被迫把它投射到我的个人项目上了吗?
答案 0 :(得分:0)
在您的情况下,泛型参数是不必要的,因为它无助于描述函数的内部逻辑。 您可以使用外部选项进行相同类型的强制。 只有在无法从函数或类签名中删除时,通用参数才有意义
// Bad. Generic can be removed
function parse<T>(): T;
const x = parse<number>();
// Good. No unnecessary generic
function parse(): {};
const x = parse() as number;
// Good. Generic can't be removed
function identity<T>(arg: T): T {
return arg;
}