TypeScriptでいくつかのES6クラスを使用してユーザーインターフェイスを構築しています。私はControl
と呼ばれる基本クラスを持っています。いくつかのプロパティが既に設定されているControl
のインスタンスであるButtonを作成する方法が必要です。私はControl
のサブクラスとしてButton
を実装しました。TypeScript OOデザイン - コンストラクタのみが異なる場合にサブクラスを使用する
私のサブクラスで発生する唯一のことは、コントロールのtype
を 'button'に設定してsuper()を呼び出すことです。また、Buttonでは、特定のコントロールプロパティが必須になります。それは間違っていると感じる。私は本当にサブクラスを使用すべきですか?これを行うための良いOOPの方法は何でしょうか?
interface ControlOptions {
type: string;
label?: string;
onClick?:() => void; // optional here
submit?: boolean;
transition?: Transition
}
class Control {
constructor(options: ControlOptions) {
}
// Some methods left out for brevity.
}
interface ButtonOptions {
label: string
onClick:() => any // mandatory here
submit?: boolean
transition?: Transition
}
// should this be a subclass?
class Button extends Control {
constructor(options: ButtonOptions) {
let controlProps = { type: 'button', ...options };
super(controlProps);
if (options.transition) {
options.transition.setSource(this);
}
}
}
ので、二つのクラス間の*だけ*変更は 'タイプです。「button''? – thedayturns
ほとんどの場合、ButtonのonClickオプションは必須ですが、Controlではオプションです – chazmuzz