面试题答案
一键面试- 避免命名冲突的方法:
- 使用命名空间(Namespace):将相关的代码组织在一个命名空间内,不同命名空间中的同名导出不会冲突。例如:
namespace Module1 {
export const myFunction = () => {
console.log('This is myFunction in Module1');
};
}
namespace Module2 {
export const myFunction = () => {
console.log('This is myFunction in Module2');
};
}
Module1.myFunction();
Module2.myFunction();
- 使用ES6模块的默认导出:每个模块只能有一个默认导出,这样即使不同模块有同名的默认导出,在导入时也不会冲突,因为默认导出不需要指定名称。例如:
// moduleA.ts
export default function myFunction() {
console.log('This is myFunction in moduleA');
}
// moduleB.ts
export default function myFunction() {
console.log('This is myFunction in moduleB');
}
// main.ts
import funcA from './moduleA';
import funcB from './moduleB';
funcA();
funcB();
import
语句中别名(alias)的作用及示例:- 别名可以为导入的模块成员指定一个不同的名称,从而避免命名冲突。例如:
// module1.ts
export const myFunction = () => {
console.log('This is myFunction in module1');
};
// module2.ts
export const myFunction = () => {
console.log('This is myFunction in module2');
};
// main.ts
import {myFunction as func1} from './module1';
import {myFunction as func2} from './module2';
func1();
func2();
在上述示例中,通过as
关键字给从不同模块导入的同名函数myFunction
分别取了别名func1
和func2
,这样就可以在同一个作用域中使用这两个不同的函数而不会产生命名冲突。