【发布时间】:2020-04-09 16:06:18
【问题描述】:
我在使用两个实用程序文件中单独导出的函数的 Angular 应用程序中遇到循环依赖检测警告。我将展示下面两个文件的简化示例。
第一个文件:
// type-helper.ts
import {getPropertyIfExists} from "./helper";
export function isType(item: any, type: string, property?: string) {
const target = getPropertyIfExists(item, property);
if (typeof type !== "string") return false;
else return typeof target === type;
}
export function isArray(item: any[] | any): item is any[] {
return item && Array.isArray(item);
}
export function isObject(item: object | any): item is object {
return item && typeof item === 'object';
}
第二个文件:
// helper.ts
import {isArray, isObject} from "./type-helper";
export function getPropertyIfExists(item: any, property?: string): any {
if (property) return item[property];
else return item;
}
export function removeUndefinedProperties<T>(obj: T): T {
const keys = Object.keys(obj);
for (const key of keys) {
if (isArray(obj[key])) obj[key] = removeEmptyValuesFromArray(obj[key]);
else if (isObject(obj[key])) obj[key] = removeUndefinedProperties(obj[key]);
else if (item === undefined || item === null) delete obj[key];
}
return obj;
}
这两个文件都提供了我喜欢在我的应用程序中重复使用的小型实用程序,而不必链接到单个服务。据我所知,这些文件之间没有其他链接。
所以,我的问题:
- 警告是预期的行为吗?如果您在组件和服务之间存在循环依赖关系,我理解警告,其中导入了整个类,但在这种情况下,实际导入的项目之间没有循环依赖关系。
- 如果没有问题,有没有办法让这种特定情况下的警告消失(不从其他循环依赖项中删除警告)?
谢谢!
【问题讨论】:
-
可以显示这些文件所在的文件夹结构吗?
-
它们都在“/src/app/utilities”文件夹中。
标签: angular typescript circular-dependency