【发布时间】:2022-06-29 05:32:42
【问题描述】:
如果我像这样创建地图:(playground)
const x = new Map();
const y = x.get("foo");
y.thisDoesntExist();
我希望在最后一行出现错误(至少在严格模式下),因为我从未指定 new Map 的键和值类型应该是什么。相反,地图的类型是Map<any, any>,所以我没有收到任何警告。 Set<any> 也是如此。
我正在移植一个 JavaScript 项目,所以像这样的案例到处都是,很难判断哪里缺少类型。
有没有办法配置打字稿,以便在我尝试在没有泛型的情况下实例化 Sets 和 Maps 时向我发出警告?或者至少让泛型默认为Set<unknown>?
【问题讨论】:
-
我希望它在
noImplicitAny下发出警告,但似乎没有。 github.com/microsoft/TypeScript/issues/13609 -
@AlekseyL。啊谢谢!我觉得我一直在到处寻找这样的问题,但我找不到。
-
我认为问题在于
MapConstructor明确指定`new(): Map;` -
您可以使用声明合并并覆盖
MapConstructor接口。如果这对你有用,我可以添加一个答案。 typescriptlang.org/play?#code/… -
啊,是的,这就是我要找的东西!不幸的是,我认为我无法使用它。我主要在 JSDoc 中使用类型,我刚刚发现 JSDoc 不支持使用泛型调用构造函数:(github.com/microsoft/TypeScript/issues/38876
标签: typescript