Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeScript:初始化嵌套对象的更简单方法?_Javascript_Typescript_Function_Object_Ecmascript 6 - Fatal编程技术网

Javascript TypeScript:初始化嵌套对象的更简单方法?

Javascript TypeScript:初始化嵌套对象的更简单方法?,javascript,typescript,function,object,ecmascript-6,Javascript,Typescript,Function,Object,Ecmascript 6,在Angular/TypeScript中工作时,有一个小问题:假设我有一个带有嵌套对象的已定义对象和一个空白构造函数。(在本例中,它来自一个包,因此我无法编辑它;否则我将添加一个构造函数。) 目前我对其进行如下初始化: var childObj = new ChildObj(); childObj.ChildProp = 'my child prop'; var myObj = new MyObj(); myObj.Prop1 = 'foo'; myObj.Prop2 = 'bar'; myO

在Angular/TypeScript中工作时,有一个小问题:假设我有一个带有嵌套对象的已定义对象和一个空白构造函数。(在本例中,它来自一个包,因此我无法编辑它;否则我将添加一个构造函数。)

目前我对其进行如下初始化:

var childObj = new ChildObj();
childObj.ChildProp = 'my child prop';

var myObj = new MyObj();
myObj.Prop1 = 'foo';
myObj.Prop2 = 'bar';
myObj.ChildProp = childObj;
是否有一种不那么麻烦的方法来实现上述目标?我认为对象初始化语法在JS/TypeScript中不起作用。我喜欢使用这种语法:

var myObj = new MyObj {
    Prop1 = 'foo',
    Prop2 = 'bar',
    ChildObj = new ChildObj {
        childObj.ChildProp = 'my child prop'
    }
};
您可以使用以下方法:

var myObj =  { ...(new MyObj()), Prop1: "foo", Prop2: "bar", ChildObj: { ...(new ChidlObj()), ChildProp: "my child prop" } };
您可以使用以下方法:

var myObj =  { ...(new MyObj()), Prop1: "foo", Prop2: "bar", ChildObj: { ...(new ChidlObj()), ChildProp: "my child prop" } };
试试这个:

let myObj = {
    prop1: 'foo',
    pop2: 'bar',
    childObj: {
        childProp: 'my child prop'
    }
} as MyObj;
试试这个:

let myObj = {
    prop1: 'foo',
    pop2: 'bar',
    childObj: {
        childProp: 'my child prop'
    }
} as MyObj;

请注意,这将断开原型链,因此可能缺少方法。请注意,这将断开原型链,因此可能缺少方法。