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