我来自 Java 背景,正在加快使用 Angular 1.5.8+typescript 的速度。
我有一个表单控制器,可以处理表单中的原始字段并生成数据结构。它可能会做的事情的一个例子:获取原始地址,将其解析为标准格式并查找纬度和经度。
我试图找出将解释的表单数据公开给应用程序其余部分的最佳方式,并想看看是否有任何一种是“可接受的”标准做事方式。
我偏爱的方式是创建两个类,一个代表表单中完全解析的数据,另一个代表该数据的部分子集。
对数据感兴趣的调用者会在我的控制器上调用 getCompleteData 或 getIncompleteData,这取决于他们是否想要实时查看或完整数据(如果可用)。有关实际表单字段及其值的详细信息不会暴露在控制器之外。
我考虑这样做的另一种方法是向控制器添加一堆方法来访问处理过的每一位数据,每个方法都有一个可能返回。
方法一:
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}
}
方法二:
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
}
这个问题可能更适合代码审查堆栈交换——让我知道我是否应该移动它!