编译打字稿时如何防止错误“对象类型的索引签名隐式具有'任何'类型”?
Posted
技术标签:
【中文标题】编译打字稿时如何防止错误“对象类型的索引签名隐式具有\'任何\'类型”?【英文标题】:How do I prevent the error “Index signature of object type implicitly has an 'any' type” when compiling typescript?编译打字稿时如何防止错误“对象类型的索引签名隐式具有'任何'类型”? 【发布时间】:2021-10-08 13:08:37 【问题描述】:我尝试使用以下全局变量编写一些测试单元
declare global
namespace NodeJS
interface Global
signin(): string;
global.signin = () =>
return ["test"] ;
;
我在 global.signin 上遇到错误:
“元素隐含地具有‘any’类型,因为类型‘typeof globalThis’没有索引签名。”
【问题讨论】:
这能回答你的问题吗? How do I prevent the error "Index signature of object type implicitly has an 'any' type" when compiling typescript with noImplicitAny flag enabled?signin
返回["test"]
,即string[]
,而不是string
。修复该问题后,您的代码对我来说工作得很好。我猜您真正的问题出在您共享的代码之外。
问题出现了:为什么你需要做一些全球性的东西呢?为什么不提供一些单例服务或其他东西。或者依赖注入。有许多更好的方法可以让某些东西“全球化”。
@funkizer 添加 sting[] 不会改变错误
@funkizer 你能给我更多信息以更好地做到这一点吗?我想为测试单元制作全局。为了能够使用 global.signin 功能
【参考方案1】:
我也试过这段代码,我看到有人说它有效。但仍然是同样的错误。
declare global
module NodeJS
interface Global
myConfig: any;
global.myConfig = 'Hello!';
【讨论】:
以上是关于编译打字稿时如何防止错误“对象类型的索引签名隐式具有'任何'类型”?的主要内容,如果未能解决你的问题,请参考以下文章