如何在 TypeScript 中创建动态对象

2024-06-24

有没有办法在 TypeScript 中定义动态对象类型? 在下面的示例中,我想通过以下方式定义“我的复杂类型”的类型:

“我的复杂类型”类型的对象是具有“任意数量的属性”的对象,但这些属性的值必须是 IValue 类型。

// value interface
interface IValue {
    prop:string
}

// My Complex Type
myType = {
    field1:IValue
    field2:IValue
    .
    .
    .
    fieldN:IValue
}

// Using My Complex Type 

interface SomeType {
    prop:My Complex Type
}

是的,这种行为是可以实现的,但方式略有不同。您只需要使用打字稿界面,例如:

interface IValue {
    prop: string
}

interface MyType {
    [name: string]: IValue;
}

例如将使用如下:

var t: MyType = {};
t['field1'] = { prop: null };
t['field2'] = new DifferentType(); // compile-time error
...
var val = t['field1'];
val.prop = 'my prop value';

您不必创建 typescript 类,您需要的只是一个常规的 javascript 对象(在本例中为 {} )并使其实现 MyType 接口,因此它的行为就像字典一样,并为您提供编译时类型安全性。

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

如何在 TypeScript 中创建动态对象 的相关文章

随机推荐

  • 在本机与expo中使用自定义字体,每次加载字体

    我正在使用 Expo 和 create react native 应用程序 我喜欢手机上的实时 热重载功能 但我想知道自定义字体 https docs expo io versions v17 0 0 guides using custom
  • Laravel 4:Facade 与 DI(何时使用)

    我的理解是 外观被用作依赖注入的替代方案 如果我错了 请纠正 目前尚不清楚的是何时应该使用其中之一 每种方法的优点 缺点是什么 我应该如何确定何时使用其中之一 最后 为什么不两者都使用呢 我可以创建一个引用接口的外观 貌似Sentry 2就
  • Flutter中FloatingActionButton的渐变背景

    是否可以将FAB的背景颜色设置为渐变而不是纯色 我的按钮 floatingActionButton FloatingActionButton backgroundColor const Color 0xFFFF006E child cons
  • 使用 xsd -cvc-length-valid ERROR 使元素可选

  • 我的 Apache CXF 客户端出了什么问题?

    这是我的一部分pom xml
  • 是否有 ReplayDIRECTOR / Chronon Debugger 的开源替代品?

    您可能熟悉 重播导演 http www replaysolutions com products replaydirector for java ee http www replaysolutions com products replay
  • 清理丑陋的所见即所得 HTML 代码? Python 或 *nix 实用程序

    我终于升级了 重写 我的第一个 Django 应用程序 但我正在迁移所有内容 我愚蠢地给了用户一个完整的WYSIWYG对于某些任务来说 生成的 HTML 代码当然非常丑陋 额外的标签比内容更多 有谁知道我可以用来清理代码的库或外部外壳应用程
  • R - 添加质心到散点图

    我有一个数据集 两个连续变量和一个因子变量 两个类 我想创建一个具有两个质心 每个类一个 的散点图 其中包括 R 中的误差线 质心应位于每个类的 x 和 y 的平均值处 我可以使用 ggplot2 轻松创建散点图 但我不知道如何添加质心 是
  • 初始化一个对象,然后将其存储到 NSArray 中。这会不会漏水啊?

    如果一个 inited 对象来给我保留 所以我拥有它 并将其存储在 NSArray 中 该 NSArray 保留存储在其中的内容 我可以依靠 NSArray 来查看它已经保留并且不增加计数 或者做我需要遍历数组并减少保留计数以确保没有内存泄
  • 使用 TEE 从 TFS 签出到 eclipse 的最佳方式是什么?

    我正在开发一个 QNX 应用程序 因此我使用旧版本的 Eclipse CDT C 等 到目前为止 我一直在使用 TFS 进行检查 然后通过 Import gt General gt ExistingProject 将项目文件导入到工作区 这
  • appengine python (bigtable) 中的父->子关系

    我仍在学习有关 bigtable nosql 中的数据建模的课程 并且希望得到一些反馈 如果我经常需要跨父母处理孩子的聚合 那么我应该在数据建模中避免父母 gt 孩子的关系吗 举个例子 假设我正在构建一个由许多作者贡献的博客 每个作者都有帖
  • 如何打印垂直对齐的文本

    我想在文件中打印以下格式的输出 1 Introduction 1 1 1 Scope 1 1 2 Relevance 1 1 2 1 Advantages 1 1 2 1 1 Economic 2 1 2 2 Disadvantages
  • 为什么 Kleisli 不是 Monoid 的一个实例?

    如果您希望附加两个类型 a gt m b 的函数 以便只得到一个附加两个结果的相同类型的函数 您可以使用 Kleisli 来执行此操作 instance Monad m Monoid b gt Monoid Kleisli m a b wh
  • 在vb.net中将base64解码为图像

    我一直在互联网上搜索 但没有找到答案 你想告诉我如何解码base64 to be Image像折线图一样 我一直在尝试从base64 to Byte首先数组并从Byte数组到Image Private Function convertbyt
  • 管理对麦克风输入和系统音量的访问

    我希望做三件事 从麦克风访问数据 我真的想知道的是设备感知到的声音的总音量 设置麦克风增益 设置系统音量 我所有的 Windows 开发经验都是 C WPF 所以我想保持管理 我不需要特别高性能或实时处理或任何东西 我环顾四周 似乎 Sli
  • 如何在控制台应用程序中从 Task.WaitAll() 获取返回值?

    我使用控制台应用程序作为概念证明和获取异步返回值的新需求 我发现我需要使用Task WaitAll 在我的 main 方法中以避免需要异步 main 方法 这是非法的 我现在一直在试图找出一个重载 该重载允许我使用泛型或仅返回一个可以转换的
  • 声明实例变量迭代哈希!

    我想做以下事情 我想声明一个迭代字典的类的实例变量 假设我有这个哈希 hash key1 gt value1 key2 gt value2 key3 gt value3 我想将每个键作为类的实例变量 我想知道我是否可以声明迭代该哈希的变量
  • Python 中浮点数到分数的转换

    在对 Python 3 52 中的 float 类型到 Fraction 类型转换主题进行练习时 我发现了两种不同转换方式之间的差异 第一种方法是 gt gt gt from fractions import Fraction gt gt
  • 如何修复“在 null 上调用 getter“文档””。颤动中

    我正在使用 flutter 和 firebase 创建移动应用程序 我的 Firestore 上有 2 个集合 我想阅读集合 帖子 中的所有文档 但是 当我这样做时 出现错误 指出 getter 文档 被调用为 null Widget ge
  • 如何在 TypeScript 中创建动态对象

    有没有办法在 TypeScript 中定义动态对象类型 在下面的示例中 我想通过以下方式定义 我的复杂类型 的类型 我的复杂类型 类型的对象是具有 任意数量的属性 的对象 但这些属性的值必须是 IValue 类型 value interfa