Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 类型脚本分配';对象';特定类型,而不是';任何';_Typescript_Eslint - Fatal编程技术网

Typescript 类型脚本分配';对象';特定类型,而不是';任何';

Typescript 类型脚本分配';对象';特定类型,而不是';任何';,typescript,eslint,Typescript,Eslint,由于--strict_检查和typescript eslint检查,我试图修复代码中的一些新错误。下面是我解释的所有代码示例。假设我有一个对象a,我想直接将它指定为一个映射来避免一些错误。我不能用“任何”这个关键词。这就是我想做的: isEquivalent(a: Object, b: Object): boolean { const aObject: {[index: string]: Object} = a; const bObject: {[index: string]: Ob

由于--strict_检查和typescript eslint检查,我试图修复代码中的一些新错误。下面是我解释的所有代码示例。假设我有一个对象a,我想直接将它指定为一个映射来避免一些错误。我不能用“任何”这个关键词。这就是我想做的:

isEquivalent(a: Object, b: Object): boolean {
   const aObject: {[index: string]: Object} = a;
   const bObject: {[index: string]: Object} = b;
}
链接到带有实际代码段的typescript: 但这带来了一个错误:

错误TS2322:类型“Object”不能分配给类型“{[index:string]:Object;}”。 “对象”类型可分配给很少的其他类型。你的意思是用“any”类型吗? 类型“Object”中缺少索引签名


有人能给我指出类型的解决方案,将对象指定为,而不使用“any”吗?或者如果这是不可能的,请告诉我。

const aObject:{[index:string]:Object}=a
a
(类型为
Object
)分配给
aoobject
(类型为
{[index:string]:Object}
,一个具有字符串属性名称和
对象
属性值的对象)。但是
Object
的赋值与
{[index:string]:Object}
不兼容,因此TypeScript会给出该错误

如果要强制执行,可以执行以下操作:

const aObj=a作为{[index:string]:Object};

但是请注意,类型断言大多会禁用TypeScript的类型检查。调用者可以传入
{a:42}
,这是而不是a
{[index:string]:Object}
,TypeScript会允许它,因为您已经说过参数只是
Object
,但随后您将其视为
{[index:string]:Object}


有时这是适当的,但是您可以考虑给参数类型<代码> {[index:string ]:对象}< /Cord>,而不是在函数中使用类型断言。这样,TypeScript可以确保只传入正确键入的对象。

进行了您要求的更改。