Node.js 没有带类型为';的参数的索引签名;字符串';在类型上找到

Node.js 没有带类型为';的参数的索引签名;字符串';在类型上找到,node.js,typescript,dictionary,google-cloud-firestore,Node.js,Typescript,Dictionary,Google Cloud Firestore,我来自移动应用程序开发,对typescript没有太多经验。如何声明[string:any]形式的映射对象 错误出现在第行:map[key]=value 元素隐式具有“any”类型,因为类型为“string”的表达式不能用于索引类型为“Object” 在“Object”类型上找不到具有“string”类型参数的索引签名。ts(7053) 您通常不想使用新对象()。相反,可以这样定义map: var映射:{[key:string]:any}={};//字符串的地图->你喜欢的任何东西 如果可以的

我来自移动应用程序开发,对typescript没有太多经验。如何声明[string:any]形式的映射对象

错误出现在第行:map[key]=value

元素隐式具有“any”类型,因为类型为“string”的表达式不能用于索引类型为“Object”

在“Object”类型上找不到具有“string”类型参数的索引签名。ts(7053)


您通常不想使用
新对象()
。相反,可以这样定义
map

var映射:{[key:string]:any}={};//字符串的地图->你喜欢的任何东西

如果可以的话,最好用更具体的东西替换
任何
,但这应该从一开始就行。

正如上面提到的@Tim Perry,直接使用object。我建议你自己编一本字典

declare global {
   type Dictionary<T> = { [key: string]: T };
}
声明全局{
类型Dictionary={[key:string]:T};
}
那么你就可以使用

const map: Dictionary<number> = {} // if you want to store number.... 
const-map:Dictionary={}//如果要存储数字。。。。

更容易阅读。

您需要声明记录类型

var map: Record<string, any> = {};
var-map:Record={};

var map: Record<string, any> = {};