在这种情况下,TypeScript 将允许您转换项目......尽管这意味着test1
和test2
是同一个对象。
interface Foo1 {
a: string;
b: boolean
c: Object;
}
interface Foo2 extends Foo1 {
d: number;
}
var test1: Foo1 = { a: '...', b: true, c: {} };
var test2: Foo2 = <Foo2> test1;
test2.d = 1;
如果你想要一个副本,而不是同一个对象,你可以创建一个方法来复制对象的属性。下面是一个副本示例:
var test1: Foo1 = { a: '...', b: true, c: {} };
var test2: Foo2 = <Foo2>{};
for (var variable in test1) {
if( test1.hasOwnProperty( variable ) ) {
test2[variable] = test1[variable];
}
}
使用一点泛型提示,您可以将其封装在静态辅助方法中,如下所示:
class ObjectHelper {
static copy<TFrom, TTo>(from: TFrom) : TTo {
var to = <TTo> {};
for (var variable in from) {
if(from.hasOwnProperty(variable)) {
to[variable] = from[variable];
}
}
return to;
}
}
var test1: Foo1 = { a: '...', b: true, c: {} };
var test2: Foo2 = ObjectHelper.copy<Foo1, Foo2>(test1);