我在我的Range2项目中使用了接口,还创建了用户定义的Type Guards:
grid-metadata.ts
export interface GridMetadata {
activity: string;
createdAt: object;
totalReps: number;
updatedAt: object;
}grid.service.ts
...
function isGridMetadata(obj: any): obj is GridMetadata {
[ 'activity', 'createdAt', 'totalReps', 'updatedAt' ].every((prop) => {
if (obj.hasOwnProperty(prop) === false) return false;
});
return typeof obj.activity === 'string' &&
obj.createdAt.hasOwnProperty('.sv') &&
obj.createdAt['.sv'] === 'timestamp' &&
typeof obj.totalReps === 'number' &&
obj.updatedAt.hasOwnProperty('.sv') &&
obj.updatedAt['.sv'] === 'timestamp' ?
true :
false;
}
...用于存储(即在文件结构中)接口的约定是什么;例如,它们应该在自己的文件中还是在interface或util目录或文件中?
存储共享用户定义的类型警卫的约定是什么?将接口和UDTG放在同一个文件中(因为它们是相关的)还是将所有的UDTG都放在一个共享模块中是有意义的吗?
在构建我的项目时,我找不到任何关于最佳实践或普遍接受的惯例的实例。
发布于 2017-05-22 13:06:49
如果我理解得很好,角度就是把每一样东西都放在正确的位置。
这就是为什么我们有这样一个结构:
其中+User将是用户的文件夹。
user.ts可能是UserInterface。user-profile.ts可以是Class实现UserInterface。user-dashboard.component.ts可以是用户的仪表板组件。可能扩展了Class类的UserProfile。等等..。
这就是我如何看到一些OOP项目的结构,以及我如何解释的角度的发展,希望它是。
https://stackoverflow.com/questions/44113446
复制相似问题