Angular 带有私有属性的Typescript对象强制转换

Angular 带有私有属性的Typescript对象强制转换,angular,oop,typescript,Angular,Oop,Typescript,我试图将一个对象强制转换到一个特定的类中,但我得到一个错误,即“\u myPropertyPriv在类型ClassA中丢失” 我不使用构造函数的原因是,在真实的类中,我有他们的20个ish属性,我不想要一个有那么多属性的构造函数。你的问题中没有强制转换。您可以使用类型断言(通常称为强制转换)来执行以下操作: var obj:ClassA = { MyPropertyPub:3 } as ClassA; // OK 你的问题中没有演员。您可以使用类型断言(通常称为强制转换)来执行以下操作: va

我试图将一个对象强制转换到一个特定的类中,但我得到一个错误,即“\u myPropertyPriv在类型ClassA中丢失”


我不使用构造函数的原因是,在真实的类中,我有他们的20个ish属性,我不想要一个有那么多属性的构造函数。

你的问题中没有强制转换。您可以使用类型断言(通常称为强制转换)来执行以下操作:

var obj:ClassA = { MyPropertyPub:3 } as ClassA; // OK

你的问题中没有演员。您可以使用类型断言(通常称为强制转换)来执行以下操作:

var obj:ClassA = { MyPropertyPub:3 } as ClassA; // OK

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 ClassA
另外,使用
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();
A类{
MyPropertyPub:编号;
私人物业公司;
构造函数(cfg:Partial){
赋值(this,cfg);
}
公共方法(){
}
}
var obj3=新类别A({
MyPropertyPub:10
});
obj3.method();

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 ClassA
另外,使用
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();
A类{
MyPropertyPub:编号;
私人物业公司;
构造函数(cfg:Partial){
赋值(this,cfg);
}
公共方法(){
}
}
var obj3=新类别A({
MyPropertyPub:10
});
obj3.method();

更新您的问题以将这行代码包含在可复制的自包含示例中最后它使用{MyPropertyPub:3}工作,我还有属性类型has Number而不是Number更新您的问题以将这行代码包含在可复制的自包含示例中最后它使用{MyPropertyPub:3}工作,我也有属性类型有数字而不是数字它最终使用{MyPropertyPub:3}工作,我也有属性类型有数字而不是数字它最终使用{MyPropertyPub:3}工作,我也有属性类型有数字而不是数字