interface Foo<T> {
n: T;
}
interface Foo<U> {
y: U;
}
interface FooConstructor {
new <T>(): Foo<T>;
}
TS2314 Generic type 'Foo<T, U>' requires 2 type argument(s).
关于DefinitelyTyped/DefinitelyTyped#7321的反馈。我搜索了Promise<T, R>
接口,但是我没有找到,因为它不存在。其他贡献者可能在支持es6(lib.es6.d.ts)定义的兼容性方面有同样的困难。
4条答案
按热度按时间luaexgnf1#
您应该会收到另一个错误消息“接口的所有声明必须具有相同的类型参数”。第二个错误消息是由第一个错误消息引起的。只需将
U
重命名为T
,就可以修复这两个错误。mbyulnm02#
实际上,重新打开-如果我们可以改进,使级联错误不会给予更坏的消息,我们应该尝试这样做。
fbcarpbf3#
感谢您的接受。实际上,我找不到其他错误,因为我得到了太多大于2000的错误。在重构DefinitelyTyped提供的声明文件期间,我们将很难找到您指定的错误。
h79rfbju4#
啊,真高兴我找到了这个;我一直在绞尽脑汁想为什么会出现“所有'Promise'的声明都必须具有相同的类型参数”错误。由于所有的级联错误都引用了'Promise〈T,R〉',我确信在某个地方有一个定义使用了两个类型参数,而不是问题是Promise与Promise冲突。
出于好奇,为什么这是一个错误?AFAIK泛型参数的名称只由实现代码在本地使用,即使用它的代码只需要知道位置/约束。