Какова цель передачи типа этому классу? - PullRequest
0 голосов
/ 27 марта 2020

В поваренной книге Angular do c для динамических c форм этот базовый класс для вопроса (один из их элементов формы) рекомендуется:

export class QuestionBase<T> {
  value: T;
  key: string;
  label: string;
  required: boolean;
  order: number;
  controlType: string;
  type: string;
  options: {key: string, value: string}[];

  constructor(options: {
      value?: T,
      key?: string,
      label?: string,
      required?: boolean,
      order?: number,
      controlType?: string,
      type?: string
    } = {}) {
    this.value = options.value;
    this.key = options.key || '';
    this.label = options.label || '';
    this.required = !!options.required;
    this.order = options.order === undefined ? 1 : options.order;
    this.controlType = options.controlType || '';
    this.type = options.type || '';
  }
}

И когда он используется, часть данных типа передается в

export class TextboxQuestion extends QuestionBase<string> {/* input-type specific code */}
                                                  ^^^^^^
export class DropdownQuestion extends QuestionBase<string> {/* input-type specific code */}
                                                   ^^^^^^

Я не понимаю, почему вы передаете этот тип классу QuestionBase. В общем, почему полезно передавать тип в такой класс? И в этом конкретном примере c, зачем передавать тип необязательного свойства (не уверен, что это важно, это необязательно), и, кроме того, для входных данных HTML все они возвращают строки, насколько я знаю, так что это цель?

1 Ответ

0 голосов
/ 27 марта 2020

Это способ написания обобщений в TypeScript

HTML входах, используемых с Angular Формы могут обрабатывать намного больше, чем string, если у вас есть <input type="number"> это не будет возвращать строку, но, например, number. Это может быть то, что вы здесь упускаете.

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