有什么方法可以在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
}

最佳答案

是的,可以实现这种行为,但方式略有不同。您只需要使用 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对象(在这种情况下为{}),并使其实现接口(interface)MyType,因此它的行为类似于字典并为您提供了编译时类型的安全性。

关于typescript - 如何在TypeScript中执行动态对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30840596/

10-12 15:43