是否可以定义一个包含对象的对象?

2024-03-20

我有这个对象:

var a = {
 "1":{"topicId":1,
      "subTopicId":1,
      "topicName":"x",
      "subTopicName":"x"},
 "2":{"topicId":1,
      "subTopicId":2,
      "topicName":"x",
      "subTopicName":"x"},
 "62":{"topicId":10,
       "subTopicId":62,
       "topicName":"x",
       "subTopicName":"x"}
}

我意识到我可以像这样定义内部对象:

interface IData {
    topicId: number;
    subTopicId: number;
    topicName: string;
    subTopicName; string;
}

但是有没有一种方法可以定义可以具有任意数量的 IData 对象的整个对象?


如果 JSON 包含“stringId”(例如“1”、“2”)作为标识符,我们可以将该对象定义为字典(see it here http://www.typescriptlang.org/Playground#src=interface%20IData%20%7B%0A%20%20%20%20topicId%3A%20number%3B%0A%20%20%20%20subTopicId%3A%20number%3B%0A%20%20%20%20topicName%3A%20string%3B%0A%20%20%20%20subTopicName%3B%20string%3B%0A%7D%0Ainterface%20IDataSet%0A%7B%0A%09%5Bkey%3A%20string%5D%20%3A%20IData%3B%0A%7D%20%0A%0Avar%20source%20%3D%20%0A'%7B%20%20%221%22%3A%7B%22topicId%22%3A1%2C%22subTopicId%22%3A1%2C%22topicName%22%3A%22x%22%2C%20%22subTopicName%22%3A%22x%22%7D%2C'%2B%0A'%20%20%20%222%22%3A%7B%22topicId%22%3A1%2C%22subTopicId%22%3A2%2C%22topicName%22%3A%22x%22%2C%22subTopicName%22%3A%22x%22%7D%2C'%2B%0A'%20%20%2262%22%3A%7B%22topicId%22%3A10%2C%20%22subTopicId%22%3A62%2C%22topicName%22%3A%22x%22%2C%22subTopicName%22%3A%22x%22%7D'%2B%0A'%7D'%3B%0A%0Avar%20a%20%3D%20%3CIDataSet%3EJSON.parse(source)%3B%0A%0Afor(var%20key%20in%20a)%0A%7B%0A%09var%20elm%20%3D%20document.createElement('div')%3B%0A%09elm.innerText%20%3D%20%22key%3A%20%22%20%2B%20key%20%2B%20%22%2C%20topicId%3A%20%22%20%2B%20a%5Bkey%5D.topicId%09%0A%20%20%20%20document.body.appendChild(elm)%3B%0A%7D):

interface IData 
{
    topicId: number;
    subTopicId: number;
    topicName: string;
    subTopicName; string;
}
// IDictionary with a key of type string
//              and a value of type IData
interface IDataSet
{
    [key: string] : IData;
} 

var source = 
'{  "1":{"topicId":1, "subTopicId":1, "topicName":"x","subTopicName":"x"},'+
'   "2":{"topicId":1, "subTopicId":2, "topicName":"x","subTopicName":"x"},'+
'  "62":{"topicId":10,"subTopicId":62,"topicName":"x","subTopicName":"x"}'+
'}';

var a = <IDataSet>JSON.parse(source);

for(var key in a)
{
    var elm = document.createElement('div');
    elm.innerText = "key: " + key + ", topicId: " + a[key].topicId  
    document.body.appendChild(elm);
}

检查这个代码在这里 http://www.typescriptlang.org/Playground#src=interface%20IData%20%7B%0A%20%20%20%20topicId%3A%20number%3B%0A%20%20%20%20subTopicId%3A%20number%3B%0A%20%20%20%20topicName%3A%20string%3B%0A%20%20%20%20subTopicName%3B%20string%3B%0A%7D%0Ainterface%20IDataSet%0A%7B%0A%09%5Bkey%3A%20string%5D%20%3A%20IData%3B%0A%7D%20%0A%0Avar%20source%20%3D%20%0A'%7B%20%20%221%22%3A%7B%22topicId%22%3A1%2C%22subTopicId%22%3A1%2C%22topicName%22%3A%22x%22%2C%20%22subTopicName%22%3A%22x%22%7D%2C'%2B%0A'%20%20%20%222%22%3A%7B%22topicId%22%3A1%2C%22subTopicId%22%3A2%2C%22topicName%22%3A%22x%22%2C%22subTopicName%22%3A%22x%22%7D%2C'%2B%0A'%20%20%2262%22%3A%7B%22topicId%22%3A10%2C%20%22subTopicId%22%3A62%2C%22topicName%22%3A%22x%22%2C%22subTopicName%22%3A%22x%22%7D'%2B%0A'%7D'%3B%0A%0Avar%20a%20%3D%20%3CIDataSet%3EJSON.parse(source)%3B%0A%0Afor(var%20key%20in%20a)%0A%7B%0A%09var%20elm%20%3D%20document.createElement('div')%3B%0A%09elm.innerText%20%3D%20%22key%3A%20%22%20%2B%20key%20%2B%20%22%2C%20topicId%3A%20%22%20%2B%20a%5Bkey%5D.topicId%09%0A%20%20%20%20document.body.appendChild(elm)%3B%0A%7D (点击运行,查看结果)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以定义一个包含对象的对象? 的相关文章

随机推荐

  • MemorySharp 设置地址偏移量不起作用

    好的 我正在使用MemorySharp用于读取 写入游戏内存的库 我的问题是 当我尝试将偏移量添加到基指针地址时 Visual Studio 在运行时会引发错误 这是基本代码 using var m new MemorySharp Appl
  • 无法比较飞行中的 ping 时间

    我尝试以下命令失败 sdiff lt ping www nato int lt ping www reuters com 有什么办法可以实时比较 ping 时间吗 通常我只是并排打开两个 xterm 然后在每个 xterm 中运行 ping
  • 使用可滚动结果集在休眠中批量读取数据

    我正在阅读一篇关于使用休眠进行批量获取的博客http java dzone com articles bulk fetching hibernate http java dzone com articles bulk fetching hi
  • 编译错误:Lambda 目标类型交集类型

    public class X Object o I J gt interface I public void foo interface J public void foo public void bar Oracle 编译器抛出错误 X
  • WCF服务路由,瓶颈?

    我们的应用程序服务器体系结构经过设置 以便每个服务调用都经过自定义构建的 WCF 服务路由器 一个使用请求消息标头中嵌入的信息将传入请求分发到适当服务的服务 我们在使用此 WCF 服务路由器时遇到性能问题 对并发用户进行负载测试时超时 我们
  • WinRT 中的应用程序间通信

    Windows 8 上有两个 WinRT 应用程序 C Xaml 如果有的话 第一个应用程序应该接收一些数据并将其发送到第二个应用程序中 最好的方法是什么 可以使用WCF吗 编辑 第一个应用程序知道第二个应用程序 实际上第二个应用程序是一个
  • 使用 JDBC 进行批量插入的有效方法

    在我的应用程序中 我需要进行大量插入 它是一个 Java 应用程序 我使用普通 JDBC 来执行查询 数据库是Oracle 不过 我启用了批处理 因此它节省了执行查询的网络延迟 但查询作为单独的 INSERT 串行执行 insert int
  • 模拟来自developer.sandbox.com的recurring_ payment_skipped IPN

    当定期付款失败时 我需要模拟 IPN 然后 我的应用程序可以创建待处理发票并将其发送给客户 我搜索并发现我需要设置将在下面处理的 IPNtxn type recurring payment skipped recurring payment
  • 验证货币输入的最佳方法?

    我创建了 TextBox 和 CompareValidator 我认为它们将允许以下形式的输入 5 5 00 5 00 不幸的是 它不允许带有美元符号的版本 如果不允许美元符号 那么对货币进行类型检查有什么意义呢 有没有办法允许这个符号
  • 如何对总和为 100% 的一组数字进行四舍五入

    今天 我的一位朋友向我展示了网站上的一个错误 Link http img594 imageshack us img594 7605 mrul png 您可以看到百分比之和为 100 1 49 20 7 10 9 7 5 5 7 100 1
  • JQuery 验证未验证

    我正在尝试使用 JQuery 验证器插件来验证 Rails 应用程序 但它既不会抛出任何错误 也不会验证任何内容 我不知道我的代码还有什么问题 任何帮助将不胜感激 document ready function theform valida
  • 如何解决“值对于 dtype('float32') 来说太大?”

    我读了很多与此类似的问题 但仍然无法弄清楚 clf DecisionTreeClassifier clf fit X train y train X to predict array 1 37097033e 002 0 00000000e
  • 是否可以有一个函数接受任意数量、任意类型的变量?

    我有一个简单的函数 它接受一个字符串并用该字符串向我发送一封电子邮件 该函数在调试实时站点时使用 public void errEmailV1 string strVars sendEmail me email emailSubject s
  • 测试控制器有意义吗

    我有一个简单的 MVC 应用程序 由视图 gt 控制器 gt 服务 gt 模型组成 我的控制器真的很瘦 他们所做的就是调用服务方法并填充 ModelAndView 对控制器进行单元测试以确保它们在完全模拟服务的同时在 ModelAndVie
  • 查询以搜索所有包中的表和/或列

    是否可以运行查询来搜索所有包以查看包中是否使用了特定的表和 或列 包太多 无法打开每个包并查找我正在寻找的值 你可以这样做 select from user source where upper text like upper SOMETE
  • 困惑:Django“无法导入app.views”但可以导入app,在WSGI中?

    我遇到了一个奇怪的 Django 问题 使用 mod wsgi 运行 Django 姜戈正在寻找urls py 然后说 ViewDoesNotExist Could not import app views Error was No mod
  • 在 .dot 树中强制执行水平节点排序

    我正在尝试使用 GraphViz 重新创建二叉搜索树的示例图 它最终应该是这样的 这是我的第一次尝试 digraph G nodesep 0 3 ranksep 0 2 margin 0 1 node shape circle edge a
  • 将值从文本文件传递到数组

    我的代码有一些问题 我的程序根据来自输入文件的三个带的颜色计算电阻值 然后打印到输出文件 输入文件示例 红 绿 蓝绿色 灰色 黄色 输出文件示例 电阻 欧姆 680电阻 千欧姆 1420 然而 每次我运行该程序时它都会崩溃 我进行了一些调试
  • ngrx 和 ngxs 之间的性能差异? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想在我的 Angular 6 应用程序中使用 ngxs 进行状态管理 但我不确定它对于大型项目是否成熟 我找不到任何有关 ngrx 和 ngx
  • 是否可以定义一个包含对象的对象?

    我有这个对象 var a 1 topicId 1 subTopicId 1 topicName x subTopicName x 2 topicId 1 subTopicId 2 topicName x subTopicName x 62