1. stringUtils.ts
代码
export const capitalize = (str: string): string => {
return str.charAt(0).toUpperCase() + str.slice(1);
};
2. numberUtils.ts
代码
export const square = (num: number): number => {
return num * num;
};
3. allUtils.ts
代码
import { capitalize } from './utils/stringUtils';
import { square } from './utils/numberUtils';
export { capitalize, square };
4. main.ts
代码
import { capitalize, square } from './allUtils';
const result1 = capitalize('hello');
const result2 = square(5);
console.log(result1);
console.log(result2);
处理模块之间的依赖关系和避免循环引用
- 处理依赖关系:
- 在TypeScript中,通过
import
语句来明确指定模块间的依赖。例如在allUtils.ts
中,使用import { capitalize } from './utils/stringUtils';
和import { square } from './utils/numberUtils';
来引入所需的函数。这种方式清晰地表明了allUtils.ts
依赖于stringUtils.ts
和numberUtils.ts
。
- 在
main.ts
中,通过import { capitalize, square } from './allUtils';
表明main.ts
依赖于allUtils.ts
。
- 避免循环引用:
- 尽量保持模块依赖关系的单向性。在本项目结构中,
main.ts
依赖allUtils.ts
,allUtils.ts
依赖stringUtils.ts
和numberUtils.ts
,不存在循环引用。
- 如果不小心出现循环引用,TypeScript在编译时可能不会报错,但在运行时会出现未定义或意外的行为。为避免这种情况,要审视模块的设计,确保功能划分合理,每个模块职责单一,避免模块之间互相依赖。例如,如果发现两个模块有相互依赖的倾向,可以考虑将共同的部分提取到一个新的独立模块中。