Object literal的属性'children'隐式具有'any []'类型

bob*_*e01 7 arrays typescript

如何设置myOtherKey属性any

打字稿错误..

Object literal's property 'children' implicitly has an 'any[]' type
Run Code Online (Sandbox Code Playgroud)

对象初始化..

let myObject = {
  myKey: 'someValue',
  myOtherKey: []
};
Run Code Online (Sandbox Code Playgroud)

tos*_*skv 15

你能做的就是断言自己该数组的预期类型是什么,以便覆盖编译器对任何类型的解析.

let myObject = {
  myKey: 'someValue',
  myOtherKey: [] as string[]
};
Run Code Online (Sandbox Code Playgroud)

  • 这实际上比我的方法更好。+1 (2认同)

Pat*_*laź 13

您还可以通过设置告诉 Typescript 您不关心隐式的任何内容:

 "noImplicitAny": false,
Run Code Online (Sandbox Code Playgroud)

在你的 tsconfig.json 中。

如果您不想在整个项目中将其设置为关闭,您还可以在 'myOtherKey' 行之前添加此行:

// @ts-ignore
Run Code Online (Sandbox Code Playgroud)

通常,toskv 答案是可行的方法,但有时,向打字稿解释所有内容只是一种开销(例如,当您模拟某个对象并且希望在某些属性上保存空数组时)。


Mur*_*göz 6

您可以将对象声明为any例如

let myObject:any = {
  myKey: 'someValue',
  myOtherKey: []
};
Run Code Online (Sandbox Code Playgroud)

  • 我认为您不希望“myObject”本身成为任何对象。即使您只希望一个属性为 any,您也会失去整个对象的类型安全性 (4认同)
  • @danielspaniol如果你想保持它的类型安全,那么你需要将它定义为一个类。 (2认同)