私は Java のバックグラウンドを持っており、Angular 1.5.8+typescript に慣れています。
フォームから生のフィールドをクランチしてデータ構造を生成するフォームコントローラーがあります。それが行う可能性のある種類の例: 生の住所を取得し、それを標準形式に解析し、緯度と経度を検索します。
解釈されたフォーム データをアプリケーションの残りの部分に公開する最善の方法を見つけようとしています。どちらかが「許容できる」標準的な方法であるかどうかを確認したかったのです。
私が好きな方法は、フォームから完全に解析されたデータを表すクラスと、そのデータの部分的なサブセットを表すクラスの 2 つのクラスを作成することです。
データに関心のある発信者は、リアルタイムのピークまたは完全なデータ (利用可能な場合) が必要かどうかに応じて、コントローラーで getCompleteData または getIncompleteData を呼び出します。実際のフォーム フィールドとその値に関する詳細は、コントローラの外部には公開されません。
これを行うために私が考えた別の方法は、処理されたデータの各ビットにアクセスするための一連のメソッドをコントローラーに追加することでした。
方法 1:
class MyFormController {
address() : Maybe<Address> = {
if (theForm.street.length > 0) {
just(new Address(theForm.street, theForm.city, theForm.state, findLatAndLong(...)));
} else { nothing() }
}
street() : string = { theForm.street}
}
方法 2:
class CompleteParsedData {
address: Address;
firstName: string;
middleInitial: Maybe<string>;
lastName: string;
}
class IncompleteParsedData {
address: Maybe<Address;
firstName: Maybe<string>;
middleInitial: Maybe<string>;
lastName: Maybe<string>;
}
class MyFormController {
getParsedData: Try[CompleteParsedData]; //return complete parsed data or validation error explaining what's missing
getIncompleteData: IncompleteParsedData; //return as much of the parsed data as we can infer from current raw data
}
この質問は、コード レビュー スタック交換に適している可能性があります。移動する必要がある場合はお知らせください。