Фабричный шаблон и свойство TypeScript не существует? - PullRequest
0 голосов
/ 03 мая 2020

Я собираюсь реализовать шаблон фабрики в моем приложении nodejs с машинописью со следующим кодом для тестирования:

class userFactory {
  public constructor(type:string) { return new Admin() }
}

class Admin {
  public type:string;
  constructor(){
    this.type = "admin"
  }
  public pwd(){ return "200" }
}

let factory = new userFactory('admin');
console.log(factory.pwd())

При выполнении этого из консоли я получаю следующую ошибку: index. ts: 17: 21 - ошибка TS2339: свойство 'pwd' не существует для типа 'userFactory'.

Почему я не могу получить доступ к методу Admin pwd? не могли бы вы объяснить мне, пожалуйста?

спасибо

1 Ответ

1 голос
/ 03 мая 2020

Я думаю, что лучше не возвращать новый объект из конструктора userFactory. Вы можете использовать метод create на своей фабрике, чтобы код работал должным образом.

class userFactory {
    create(type: string) {
        return new Admin();
    }
}

class Admin {
  public type:string;
  constructor(){
    this.type = "admin"
  }
  public pwd(){ return "200" }
}

let factory = new userFactory();
let admin = factory.create('admin');
console.log(admin.pwd());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...