在Typescript中将给定类型的数组声明为Object中定义的键的值的语法是什么?

时间:2019-02-04 19:57:03

标签: typescript

我正在尝试在vuex中向我们的state对象添加属性。此属性是一个数组,稍后有对象被推入该数组。

store.ts

  state: {
    spudIsAnimating: false,
    selectedColor: colors[0],
    addedElements: object[] = [],
  },
  addToElements(state, element: object){
    state.addedElements.push(element);
  },

这将显示错误[ts] Cannot find name 'object'. Did you mean 'Object'? [2552][ts] Argument of type 'object' is not assignable to parameter of type 'never'.

store.ts

addedElements: Object[] = [],

这给出了argument of type...错误,以及新的错误ts] Element implicitly has an 'any' type because type 'ObjectConstructor' has no index signature. [7017].

store.ts

addedElements: Object[],

这可以解决argument of type...错误,但仍然存在index signature错误。

store.ts

addedElements: Array<Object>,

这将产生错误[ts] Operator '<' cannot be applied to types 'ArrayConstructor' and 'ObjectConstructor'.,而且addToElement函数现在出现此错误:ts] Property 'push' does not exist on type 'boolean'. [2339]

我只是想遵循documentation中的语法准则:

  

TypeScript与JavaScript一样,允许您使用值数组。数组类型可以用以下两种方法之一编写。首先,您使用元素的类型,然后使用[]表示该元素类型的数组:

let list: number[] = [1, 2, 3]; 
  

第二种方法使用通用数组类型Array:

let list: Array<number> = [1, 2, 3];

在文档的任何地方都找不到关于“声明对象内的数组值”的说明。

1 个答案:

答案 0 :(得分:0)

addedElements: Array<any>还是等于addedElements: any[]

(由于TsLint提供了第一种语法)