更新确定性类型d(DTSLint)上的TS接口没有不必要的泛型



我试图使用一个特定的库(查询字符串),但当我注意到"parse"函数返回了一个any类型时,我决定更新类型定义,以便添加一个泛型。

所以,我去了确定性类型存储库,分叉它,并更新了这个定义

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

有人能给我解释一下吗?我真的不明白为什么会出现问题?我真的被迫把它放在我的个人项目上?

在您的情况下,泛型参数是不必要的,因为它无助于描述函数的内部逻辑。您可以使用外部选项进行相同类型的强制。只有当泛型参数不能从函数或类签名中删除时,它才有意义

// 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;
}

最新更新