簡體   English   中英

具有私有屬性的Typescript對象轉換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM