Это мой класс в заголовке дает мне ошибку

«Литеральное свойство типа не может иметь инициализатор»

Если я удалю title, он работает нормально, я использую Angular 4.3.1

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

Большое спасибо.

5
RajnishCoder 5 Сен 2017 в 10:03

4 ответа

Лучший ответ

В вашем объекте вы не можете указать тип для свойств, когда у вас также есть значение для них.

В этом случае вы не указали объект, но его тип. Я думаю, что вы можете создать интерфейс (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)'
});
6
Suren Srapyan 5 Сен 2017 в 07:10

Используйте интерфейс для определения типов данных:

interface IInterface {
   blood: string,
   title: string
}

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

Или вы измените способ, которым вы делали это, чтобы:

export class MyClass {
    data:[
      {
        blood: string;
        title: string;
      }
    ];
}
0
codejockie 5 Сен 2017 в 07:20

Создайте класс для объекта, который вы пытаетесь создать.

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

В вашем другом классе, теперь вы можете использовать его.

export class MyClass{
    data: MyData[] = [];
    data.push({
        blood: 'foo',
        title: 'Blood Pressure - Systolic (mm/Hg)'
    });
}
1
JSON Derulo 5 Сен 2017 в 07:09

Похоже, вы пытаетесь создать объект напрямую, а не класс. Или вы пытаетесь создать класс, в котором некоторые переменные имеют значения по умолчанию. Лучший подход к тому же будет выглядеть так:

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

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

    this.param1 = param1 || [];
    this.param2 = param2 || '';
}
}
3
Sumit Agarwal 5 Сен 2017 в 07:12