Шаблон или конструкция для установки значений по умолчанию для нескольких классов, реализующих интерфейс - PullRequest
0 голосов
/ 20 марта 2020

Я обнаружил, что повторяю много кода, например:

interface IMyInterface {
  commonA: string;
  commonB: string;
}

class Foo implements IMyInterface {
  commonA: string = "hello";
  commonB: string = "world";
  foo: string = "Foo!";
}

class Bar implements IMyInterface {
  commonA: string = "hello";
  commonB: string = "world";
  bar: string = "Bar!";
}

В моем случае у меня есть множество классов, которые все разделяют commonA и commonB, но отличаются по-другому. Теперь я знаю, что не могу установить значения по умолчанию в интерфейсе, но есть ли шаблон проектирования или конструкция TS, которые позволят мне определять значения по умолчанию в одном месте?

1 Ответ

1 голос
/ 20 марта 2020

Интерфейсы не должны иметь значений по умолчанию или каких-либо значений, но вы определенно можете использовать Abstract Class для достижения этой цели. https://www.typescriptlang.org/docs/handbook/classes.html#abstract -классы

interface IMyInterface {
  commonA: string;
  commonB: string;
}

abstract class Base implements IMyInterface {
  commonA: string = "hello";
  commonB: string = "world";
}

class Foo extends Base {
  foo: string = "Foo!";
}

class Bar extends Base {
  bar: string = "Bar!";
}

Подробнее о разнице между абстрактными классами и интерфейсами: http://dotnetpattern.com/typescript-abstract-class

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