Vue+;Typescript vue路由器和参数类型

Vue+;Typescript vue路由器和参数类型,typescript,parameters,vue-router,Typescript,Parameters,Vue Router,我试图将一些数据从一个组件发送到另一个组件,但我在类型方面遇到了一些问题。 这是我的代码: const someData: object = { param1: 'param1', param2: 'param2', array: [{},{}] } this.$router.push({ name: 'SomePage', params: { someData } }) 我通过以下方式获取数据: get param1 (): string { return t

我试图将一些数据从一个组件发送到另一个组件,但我在类型方面遇到了一些问题。 这是我的代码:

const someData: object = {
   param1: 'param1',
   param2: 'param2',
   array: [{},{}]
}
this.$router.push({ name: 'SomePage', params: { someData } }) 
我通过以下方式获取数据:

  get param1 (): string {
    return this.$route.params.someData['param1']
  }
  get param2 (): string {
    return this.$route.params.someData['param2']
  }
  get array (): Array<object> {
    return this.$route.params.someData['array']
  }
get param1():字符串{
返回此。$route.params.someData['param1']
}
get param2():字符串{
返回此。$route.params.someData['param2']
}
获取数组():数组{
返回此。$route.params.someData['array']
}
以及控制台中的错误:

Argument of type '{ name: string; params: { someData: object; }; }' is not assignable to parameter of type 'RawLocation'.
  Type '{ name: string; params: { someData: object; }; }' is not assignable to type 'Location'.
    Types of property 'params' are incompatible.
      Type '{ someData: object; }' is not assignable to type 'Dictionary<string>'.
        Property 'someData' is incompatible with index signature.
          Type 'object' is not assignable to type 'string'.
“{name:string;params:{someData:object;};}”类型的
参数不能分配给“RawLocation”类型的参数。
类型“{name:string;params:{someData:object;};}”不可分配给类型“Location”。
属性“params”的类型不兼容。
类型“{someData:object;}”不可分配给类型“Dictionary”。
属性“someData”与索引签名不兼容。
类型“object”不可分配给类型“string”。
只有当我将type
any
放在
someData
中时,它才起作用,但我不想使用它。
我怎样才能解决这个问题?这是什么
'Location'
'RawLocation'
类型?

作为查询参数,您可以通过页面传递的只是字符串类型,而不是其他类型。这意味着您不能通过查询参数发送数组。 您应该将所有参数更改为字符串

   const someData: object = {
      param1: 'stringType',
      param2: 'stringType',
      ...
   }
   this.$router.push({ name: 'SomePage', params: { someData } })
与通过
vux
查询参数不同,您可以保存和数据类型并在任何地方使用它,在我的开场白中,我会做得更好,因为同时您可以自己管理传递的数据

关于你@MagnusTeekivi 您可以将它转换为字符串,然后再使用它,如下所示

`this.$router.push({ name: 'user', params: { userId.toString() })`

我也有同样的问题。是与此相关的GitHub问题。有一个回复说“目前,使用always字符串是正确的方式,打字很好”。关于你,@MagnusTeekivi,请检查答案