Как я могу решить эту ошибку Последующие объявления свойств должны иметь одинаковый тип и дубликат идентификатора. Angular 9 - PullRequest
1 голос
/ 14 февраля 2020

* Я действительно не знаю и не понимаю, почему это происходит, я новичок, используя Angular *

  • Ниже я дам свой полный код и полную ошибку

Ошибка Subsequent property declarations must have the same type. Property 'post1' must be of type 'Posts', but here has type 'any' и Duplicate identifier 'post1'

Почтовый класс

export class Posts{
    Key:string;
    Email:string;
    Password:string;
}

Класс AppComponent, где я использую post class

export class AppComponent {
  title = 'proyecto-nro2';

  post1 = new Posts();
//Said the error above in every post1.
  post1.Key = 'NONE';
  post1.Email = 'NONE';
  post1.Password = '2';
}

Ответы [ 2 ]

2 голосов
/ 14 февраля 2020

Свойства не могут быть инициализированы непосредственно в классе в ES6. Инициализируйте объект post внутри конструктора и установите свойства.

export class AppComponent {
  title = 'proyecto-nro2';

  post1: Posts;

 constructor(){
  this.post1 = new Posts();
  this.post1.Key = 'NONE';
  this.post1.Email = 'NONE';
  this.post1.Password = '2';

 }
}

Other Option:

class Posts {
    Key: string;
    Email: string;
    Password: string;

    constructor(key: string, email: string, password: string) {
        this.Key = key;
        this.Email = email;
        this.Password = password;
    }
}

export class AppComponent {
  title = 'proyecto-nro2';
  post1: Posts = new Posts('NONE', 'NONE', '2');
}
0 голосов
/ 14 февраля 2020

Как сказал @nayakam, вы должны установить свойства в конструкторе вашего объекта Posts

export class Posts{
    key: string;
    email: string;
    password: string;

    constructor(key: string, email: string, password: string) {
        this.key = key;
        this.email = email;
        this.password = password;
    }
}

Проблема в том, что это может стать раздражающим, если некоторые параметры являются необязательными, для меня лучший синтаксис это отправить объект для инициализации ваших моделей и экспорта интерфейса, чтобы ваш AppComponent знал, что нужно конструктору Posts в качестве ввода

export interface IPosts {
    key: string;
    email: string;
    password: string;
}

export class Posts{
    key: string;
    email: string;
    password: string;

    constructor(inputData: IPosts) {
        this.key = inputData.key;
        this.email = inputData.email;
        this.password = inputData.password;
    }
}

export class AppComponent {
    title = 'proyecto-nro2';
    post1: Posts = new Posts({
       key: 'NONE',
       email: 'NONE',
       password: '2'
    });
}
...