我在Angular 2项目中使用Interfaces,并且还创建了User Defined Type Guards:
export interface GridMetadata {
activity: string;
createdAt: object;
totalReps: number;
updatedAt: object;
}
...
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
目录或文件中?例如?
存储共享用户定义类型防护的惯例是什么?将Interface和UDTG放在同一个文件中(因为它们是相关的)还是将所有UDTG放在共享模块中是否有意义?
在构建项目时,我找不到关于最佳实践或普遍接受的约定的任何可靠示例。
答案 0 :(得分:1)
如果我理解的话,Angular就是把每一件东西都放在正确的位置。
这就是为什么我们有这样的结构:
+用户将成为用户的文件夹。
user.ts
可以是UserInterface
,也就是说。user-profile.ts
可以是Class
工具UserInterface
。user-dashboard.component.ts
可以是用户的信息中心组件。 Class
可能会扩展UserProfile
类。等等......
我是如何看待一些OOP项目的结构,以及我如何解释Angular的开发者想要它。