我在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 "./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;
}
这两个文件都提供了我喜欢在我的应用程序中重用的小型实用程序,而不必链接到单个服务。据我所知,这些文件之间没有其他链接。
所以,我的问题:
谢谢!
index.ts
type-helper.ts
helper.ts
helper.ts -> index.ts -> type-helper.ts
-> helper.ts -> index.ts -> type-helper.ts
-> helper.ts
为了避免这种情况,您需要导入确切的补丁程序
// helper.ts
// import {isArray, isObject} from "./helper";
import {isArray, isObject} from "./helper/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;
}
您可能有helper.ts而不是index.ts