[英]Typescript Object casting with private properties
我試圖將對象轉換為特定的類,但出現錯誤“ ClassA類型缺少_myPropertyPriv”
class ClassA{
MyPropertyPub:number;
private _myPropertyPriv
}
**later
var obj:ClassA = { MyPropertyPub:3 };
我不使用構造函數的原因是,在真實的類中,我擁有20種屬性,並且我不希望構造器具有這么多的屬性。
有一個原因是打字稿不允許這樣做:
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 ClassA
Typescript提供了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();
您的問題中沒有強制性規定。 您可以使用類型斷言(通常稱為強制類型轉換)來執行此操作:
var obj:ClassA = { MyPropertyPub:3 } as ClassA; // OK
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.