【发布时间】:2017-05-22 12:56:14
【问题描述】:
我在我的 Angular 2 项目中使用接口,并且还创建了用户定义类型保护:
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 放在一个共享模块中是否有意义?
在构建我的项目时,我找不到任何关于最佳实践或普遍接受的约定的可靠示例。
【问题讨论】:
-
我认为我们的目标是让每个东西都放在单独的容器/文件/块/文件夹中。所以,在你的界面上有一个文件。实现该接口的类的文件。扩展该类的文件(例如),等等。
-
我认为这是相当主观的。我经常看到人们说一致性比你如何命名或放置它(在合理范围内)更重要。
标签: angular typescript conventions convention file-structure