如何在TypeScript中执行动态对象

gev*_*vik 17 typescript

有没有办法在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
}
Run Code Online (Sandbox Code Playgroud)

Sla*_*wek 42

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

interface IValue {
    prop: string
}

interface MyType {
    [name: string]: IValue;
}
Run Code Online (Sandbox Code Playgroud)

将用于例如:

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

你不必创建typescript类,你需要的只是一个普通的javascript对象(在这种情况下是{})并使它实现接口MyType,所以它的行为类似于字典并为你提供编译时类型的安全性.

  • **谢谢**你刚刚为我节省了痛苦和悲伤,试图让redux-form在TypeScript中运行! (2认同)