Javascript 在Typescript中使用对象时如何初始化子对象

Javascript 在Typescript中使用对象时如何初始化子对象,javascript,typescript,Javascript,Typescript,还在学习打字脚本,我有这个目标 导出类标记{ 职位:{ 拉特:号码, 液化天然气:数量, }; 标签:{ 颜色:字符串, 文本:字符串, }; 标题:字符串; 选项:{ 动画:任何, }; }首先,我建议您在严格模式下使用Typescript 在严格模式下使用typescript时,如果类成员没有任何初始化,则会显示错误: 我还将定义每个对象的结构(也在对象内部) 如果您的标记对象不需要任何内部逻辑,那么我也会将其设置为接口: interface Marker { position:

还在学习打字脚本,我有这个目标

导出类标记{
职位:{
拉特:号码,
液化天然气:数量,
};
标签:{
颜色:字符串,
文本:字符串,
};
标题:字符串;
选项:{
动画:任何,
};

}
首先,我建议您在严格模式下使用Typescript

在严格模式下使用typescript时,如果类成员没有任何初始化,则会显示错误:

我还将定义每个对象的结构(也在对象内部)

如果您的标记对象不需要任何内部逻辑,那么我也会将其设置为接口:

interface Marker {
    position: Position;
    label: Label;
    title: string;
    options: Options;
}
您的初始化可能类似于:

for (const ybEvent of this.Events) {
    const position: Position = {
        lat: ybEvent.latitude,
        lng: ybEvent.longitude,
    };

    const label: Label = {
        color: 'blue',
        text: ybEvent.description,
    }

    const options: Options = {
        animation: google.maps.Animation.BOUNCE
    }

    const marker: Marker = {
        position,
        label,
        options,
    }

    this.markers.push(marker);
}
或没有中间对象:

for (const ybEvent of this.Events) {

    const marker: Marker = {
        position: {
            lat: ybEvent.latitude,
            lng: ybEvent.longitude,
        },
        label: {
            color: 'blue',
            text: ybEvent.description,
        },
        options: {
            animation: google.maps.Animation.BOUNCE
        }
    }

    this.markers.push(marker);
}

请记住,Typescript的思想是具有
类型
安全性。如果以这种方式初始化对象,则它没有任何类型信息。

首先设置
marker.position={}
,然后设置
marker.position.lat=some值
如果要深入到第一级,则需要使用object初始化它,或者可以使用object literal
marker.position={lat:some value,…}
这是在ts中创建、初始化和使用对象的最佳方式吗?在我看来,这与ts无关,只是js的工作方式。有一定的方法可以做到这一点,一种是手动初始化object.assign,object literal。选择取决于您的偏好。谢谢。我应该保留这篇文章还是删除它?
for (const ybEvent of this.Events) {

    const marker: Marker = {
        position: {
            lat: ybEvent.latitude,
            lng: ybEvent.longitude,
        },
        label: {
            color: 'blue',
            text: ybEvent.description,
        },
        options: {
            animation: google.maps.Animation.BOUNCE
        }
    }

    this.markers.push(marker);
}