有没有办法在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,所以它的行为类似于字典并为你提供编译时类型的安全性.
| 归档时间: |
|
| 查看次数: |
18703 次 |
| 最近记录: |