我试图将一个对象强制转换为一个特定的类,但我收到错误消息:“ClassA类型中缺少_myPropertyPriv”
class ClassA{
MyPropertyPub:number;
private _myPropertyPriv
}
**later
var obj:ClassA = { MyPropertyPub:3 };我不使用构造函数的原因是因为在真实的类中,我有他们的20个类似的属性,而我不想要一个有那么多属性的构造函数。
发布于 2017-11-28 04:21:42
typescript不允许这样做是有原因的:
class ClassA{
MyPropertyPub:number;
private _myPropertyPriv;
public method() {
}
}
var obj:ClassA = <any>{ MyPropertyPub:3 }; //works
obj.method();; // runtime error, obj is not actually of type ClassATypescript提供了Partial类型来定义包含原始类成员子集的类型:
var obj2:Partial<ClassA>= { MyPropertyPub:3 };此外,使用Partial和Object.assign为类创建构造函数也很简单,而且非常有用:
class ClassA{
MyPropertyPub:number;
private _myPropertyPriv;
constructor(cfg: Partial<ClassA>){
Object.assign(this, cfg);
}
public method() {
}
}
var obj3 = new ClassA({
MyPropertyPub: 10
});
obj3.method();发布于 2017-11-28 03:50:38
你的问题里没有选角的意思。您可以使用类型断言(通常称为强制转换)来执行此操作:
var obj:ClassA = { MyPropertyPub:3 } as ClassA; // OKhttps://stackoverflow.com/questions/47518728
复制相似问题