【问题标题】:Declaring array of objects in TypeScript? (TS1109: Expression expected)在 TypeScript 中声明对象数组? (TS1109:预期表达)
【发布时间】:2021-08-04 04:37:07
【问题描述】:

我正在尝试为我的项目创建一个对象数组,但在构建过程中,我遇到了这个问题:

TS1110:预期类型
TS1109:预期表达式

我的数组如下所示:

export let COUNTRIES: Array<{ name: string, segments: number[] }> = Array({
   "name":"Afghanistan",
   "segments":[
      4687,
      4787,
      4790,
      4795,
      4880
   ]},{
   "name":"Albania",
   "segments":[
      4136,
      4248
   ]})

我从 Stack Overflow 尝试了this solution,但没有结果。


尝试使用界面,遇到另一个问题:

【问题讨论】:

  • 您正在使用/编译到哪个版本的 TypeScript?
  • 我正在运行 typescript 最新的稳定版本,上面的代码有效
  • 我只使用了一个包,它叫@graphprotocol/graph-ts": "0.19.0",不确定他们使用的是哪个版本。让我检查一下
  • 可以试试这个,看看效果是否更好。 let COUNTRIES: { name: string, segments: number[] }[] = whatever
  • @Jacob 同样的问题

标签: arrays typescript types


【解决方案1】:

我想你可能是这个意思?

interface Country {
    name: string;
    segments: number[];
}

export let COUNTRIES: Country[] = [
    {
    "name":"Afghanistan",
    "segments":[
       4687,
       4787,
       4790,
       4795,
       4880
    ]},{
    "name":"Albania",
    "segments":[
       4136,
       4248
    ]
}]

【讨论】:

  • 收到此问题:TS1003: Identifier expected. name: string,
  • 我猜应该是;而不是,
  • 这个选项有不同的问题(检查问题更新描述)
【解决方案2】:

如果有人对这里感兴趣是最终的解决方案:

export class Country {
  name: string
  segments: number[]
}

export let COUNTRIES: Country[] = [
    {
    "name":"Afghanistan",
    "segments":[
       4687,
       4787,
       4790,
       4795,
       4880
    ]},{
    "name":"Albania",
    "segments":[
       4136,
       4248
    ]
}]

【讨论】:

  • 考虑到class 的工作原理与interfaces 基本相似,这看起来与@Aadmaa 提供的答案非常相似
  • 使用接口它不适用于这种环境。不知道是什么原因
猜你喜欢
  • 2019-05-14
  • 2023-04-08
  • 2016-06-19
  • 2019-12-02
  • 2018-02-14
  • 1970-01-01
  • 1970-01-01
  • 2021-09-12
  • 1970-01-01
相关资源
最近更新 更多