类型文字属性在TypeScript中不能有初始值设定项

时间:2017-09-05 07:03:56

标签: angular typescript

这是我的标题课,给我一个错误

  

"类型文字属性不能有初始化程序"

如果我删除其title工作正常,我使用Angular 4.3.1

export class MyClass{
    data:[
      {
        blood:string;
        title:string = 'Blood Pressure - Systolic (mm/Hg)';
      }
    ]
}

非常感谢。

4 个答案:

答案 0 :(得分:5)

在您的对象中,当您还具有值时,无法指定属性的类型。

在这种情况下,您尚未指定对象,但它是类型。我认为您可以为数组的项创建一个接口(shape),并将其用于强类型。

interface Item {
   blood: string,
   title: string
}

export class MyClass{
    data: Item[] = [];
}

此处您的数组包含shape Item的项目。并且您可以将数据推送到与项目形状相对应的数据中。

data.push({
    blood: 'B (III) Rh (+)',
    title: 'Blood Pressure - Systolic (mm/Hg)'
});

答案 1 :(得分:2)

好像你试图直接制作一个对象而不是一个类。或者您正在尝试创建一个类,其中某些变量具有默认值。对于同样的更好的方法看起来像:

export class SomeClass {
param1: string[]; 
param2: string; 

constructor(param1?: string[],
            param2?: string) {

    this.param1 = param1 || [];
    this.param2 = param2 || '';
}
}

答案 2 :(得分:1)

为您要创建的对象创建一个类。

export class MyData {
    blood: string;
    title: string;
}

在您的其他课程中,您现在可以使用它。

export class MyClass{
    data: MyData[] = [];
    data.push({
        blood: 'foo',
        title: 'Blood Pressure - Systolic (mm/Hg)'
    });
}

答案 3 :(得分:0)

使用界面定义数据类型:

interface IInterface {
   blood: string,
   title: string
}

export class MyClass {
    data: IInterface[] = [];
}

或者你改变你的方式:

export class MyClass {
    data:[
      {
        blood: string;
        title: string;
      }
    ];
}