有没有办法在 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(使用前将#替换为@)