面试题答案
一键面试利用名字空间嵌套结构组织代码的方法
- 按功能模块划分顶级名字空间:根据项目的功能模块,划分顶级名字空间。例如,如果是一个电商项目,可以有
Ecommerce
作为顶级名字空间。这使得不同功能模块的代码在全局上有清晰的划分,避免命名冲突。 - 在顶级名字空间内嵌套子名字空间:对于每个功能模块下的不同子功能或职责,进一步嵌套子名字空间。比如在
Ecommerce
下,有Products
子名字空间用于与商品相关的代码,Orders
用于订单相关代码等。这样更细化地组织代码,使得代码结构一目了然。 - 处理模块依赖:在需要依赖其他模块的地方,通过
import
语句引入相关名字空间。如果模块A依赖模块B,在模块A中使用import { SubNamespaceB } from './path/to/moduleB'
,确保依赖关系清晰且易于管理。
关键代码片段示例
假设我们有一个简单的项目,包含用户相关功能和产品相关功能。
用户模块
// user.ts
namespace Ecommerce {
export namespace Users {
export interface User {
id: number;
name: string;
}
export function getUserById(id: number): User {
// 模拟从数据库获取用户
return { id, name: `User ${id}` };
}
}
}
产品模块
// product.ts
namespace Ecommerce {
export namespace Products {
import { Users } from './user';
export interface Product {
id: number;
name: string;
owner: Users.User;
}
export function createProduct(name: string, ownerId: number): Product {
const owner = Users.getUserById(ownerId);
return { id: Math.random(), name, owner };
}
}
}
使用示例
// main.ts
namespace Ecommerce {
const product = Products.createProduct('Sample Product', 1);
console.log(product);
}