【问题标题】:How to do dynamic objects in TypeScript如何在 TypeScript 中做动态对象
【发布时间】:2015-08-30 16:17:27
【问题描述】:

有没有办法在 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
}

【问题讨论】:

  • 你不能创建一个映射为string->IValue的对象吗?

标签: typescript


【解决方案1】:

是的,可以实现这种行为,但方式略有不同。你只需要使用 typescript 接口,比如:

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,因此它的行为类似于字典并为您提供编译时类型安全。

【讨论】:

  • 谢谢你让我在尝试让 redux-form 在 TypeScript 中工作时节省了很多痛苦和悲伤!
猜你喜欢
  • 2021-04-08
  • 2020-10-07
  • 2018-08-13
  • 2019-08-23
  • 2020-04-17
  • 2017-05-28
  • 2021-06-03
相关资源
最近更新 更多