Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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
Class 如何在typescript中初始化数组?_Class_Typescript_Syntax - Fatal编程技术网

Class 如何在typescript中初始化数组?

Class 如何在typescript中初始化数组?,class,typescript,syntax,Class,Typescript,Syntax,我正在Angular应用程序中使用MemoryDBService中的。模型的某些字段是自定义类型 以下字段是类的数组: public FlightQuotes: CFlightClassQuote[]; 以下是此字段的初始化: const cf = new Array<CFlightClassQuote>(); cf[0] = new CFlightClassQuote(); cf[0].Class = 'A'; cf[0].ClassName = 'B'; cf[0].FreeB

我正在Angular应用程序中使用MemoryDBService中的
模型
的某些字段是自定义类型

以下字段是类的数组:

public FlightQuotes: CFlightClassQuote[];
以下是此字段的初始化:

const cf = new Array<CFlightClassQuote>();
cf[0] = new CFlightClassQuote();
cf[0].Class = 'A';
cf[0].ClassName = 'B';
cf[0].FreeBack = 2;
cf[0].FreeDirect = 5;
cf[1] = new CFlightClassQuote();
cf[1].Class = 'C';
cf[1].ClassName = 'D';
cf[1].FreeBack = 3;
cf[1].FreeDirect = 6;
......
......
const model = new MyModel();
model.FlightQuotes = cf;

TypeScript没有您在问题中显示的初始化样式(即C风格的初始化器)

您可以使用构造函数创建新的构造函数:

model.FlightQuotes = [
    new CFlightClassQuote('A'),
    new CFlightClassQuote('B')
 ];
或者,如果
CFlightClassQuote
只是一个没有行为的结构,您可以使用以下内容(您必须提供所有成员)-如果您的类有方法等,这将不起作用,但适用于接口/结构:

model.FlightQuotes = [
    { Class: 'A' },
    { Class: 'B' },
 ];
或者,您可以创建一个静态映射器方法,该方法接收成员,创建一个新实例,并映射属性-因此至少您不必重复该映射:

model.FlightQuotes = [
    CFlightClassQuote.FromObject({ Class: 'A' }),
    CFlightClassQuote.FromObject({ Class: 'B' }),
 ];

TypeScript没有您在问题中显示的初始化样式(即C风格的初始化器)

您可以使用构造函数创建新的构造函数:

model.FlightQuotes = [
    new CFlightClassQuote('A'),
    new CFlightClassQuote('B')
 ];
或者,如果
CFlightClassQuote
只是一个没有行为的结构,您可以使用以下内容(您必须提供所有成员)-如果您的类有方法等,这将不起作用,但适用于接口/结构:

model.FlightQuotes = [
    { Class: 'A' },
    { Class: 'B' },
 ];
或者,您可以创建一个静态映射器方法,该方法接收成员,创建一个新实例,并映射属性-因此至少您不必重复该映射:

model.FlightQuotes = [
    CFlightClassQuote.FromObject({ Class: 'A' }),
    CFlightClassQuote.FromObject({ Class: 'B' }),
 ];

对于填充有类型化对象的数组的简短初始化,您可以使用
Object.assign

model.FlightQuotes = [
    Object.assign(new CFlightClassQuote(), {
        'Class': 'A',
        ClassName: 'B'
    }),    
    Object.assign(new CFlightClassQuote(), {
        'Class': 'C',
        ClassName: 'D'
    }),
];

对于填充有类型化对象的数组的简短初始化,您可以使用
Object.assign

model.FlightQuotes = [
    Object.assign(new CFlightClassQuote(), {
        'Class': 'A',
        ClassName: 'B'
    }),    
    Object.assign(new CFlightClassQuote(), {
        'Class': 'C',
        ClassName: 'D'
    }),
];
另一种解决办法:

model.FlightQuotes = [{
        Class: 'A',
        ClassName: 'B'
    } as CFlightClassQuote,    
    {
        Class: 'C',
        ClassName: 'D'
    } as CFlightClassQuote),
];
另一种解决办法:

model.FlightQuotes = [{
        Class: 'A',
        ClassName: 'B'
    } as CFlightClassQuote,    
    {
        Class: 'C',
        ClassName: 'D'
    } as CFlightClassQuote),
];