关于在DefinitelyTyped(DTSLint)上更新TS接口的no-needccessary-generics

时间:2017-11-03 08:24:32

标签: typescript tslint

我尝试使用特定的库(查询字符串)但是当我注意到'解析'函数给我一个任何类型我决定更新类型定义以添加泛型。

所以,我去了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

有人可以向我解释一下吗?我真的不明白它为什么会出问题?我真的被迫把它投射到我的个人项目上了吗?

1 个答案:

答案 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;
}