【问题标题】:Declare object type in class在类中声明对象类型
【发布时间】:2023-03-20 11:50:01
【问题描述】:

我应该创建一个尊重 json 格式的 js 类

{
  "rows": [{
    "value": {
        "comments": ${dInfo.description},
        "Tags": [],
        "metadataList": {
          "names": [],
          "metadata": {}
         },
  }]
}

我想知道如何声明metadata

我实际上是这样声明的。

export class Value {
  comments: string;
  Tags:string[];
  metadataList:{
    name:string[],
    metadata: Object
  }
}

这里没有输入metadataList,我认为这不是最佳实践。 我怎么能用它的类型声明metadataList

【问题讨论】:

  • 你为什么这么认为?对象已键入。
  • 我不确定,但是当我尝试 metadataList: Object{..} 它不起作用时,只有 {} 输入它吗?
  • 提供一个例子或 Fenton 的答案应该会有所帮助。
  • 既然您已经必须提出class Value { ... },是什么阻碍了您也实现自己的class MetadataList { ... }

标签: javascript typescript class object ecmascript-6


【解决方案1】:

如果元数据是键/值存储,您可以通过收紧值类型使类型比Object{} 窄一些:

class Value {
  comments: string;
  Tags:string[];
  metadataList:{
    name:string[],
    metadata: { [key: string]: string }
  }
}

const val = new Value();

val.metadataList = {
    name: ['Example'],
    metadata: {
        key: 'value',
        key2: 'value'
    }
};

如果您有更多关于元数据的信息,我可以将其缩小。

【讨论】:

  • 你有一些样本数据吗?即元数据列表中的内容 - 特别是与我的示例有什么不同?
  • 我应该指定 metadataList 类型Object{..} 而不仅仅是{..} 吗?
猜你喜欢
  • 2013-10-12
  • 1970-01-01
  • 2021-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多