之前在js中,为了防止全局变量污染,我们经常会声明一个对象,然后将变量或者函数作为对象的一个属性存在。
但是在ts中,我们可以通过关键字namespace
来解决这个问题。
这里的namespace相当于es6中的module。
start
下面通过一个例子来说明一下
namespace gameConfig = {
export const TextColor = {
valueGolden: 0xf7b44a, //净值数值颜色
transparent: 0x00000000, //透明色
btnGolden: 0xffe8a9 //按钮上的文字的颜色
}
export enum errorMsg = {
"网络连接故障,请耐心等待" = 5000,
"账号在其他位置登录,如不是本人请更改密码" = 5001
}
export let isProto: boolean = false;
let a;
export function curHeight(): number {
//当前游戏宽度
console.log(a);
return egret.MainContext.instance.stage.stageHeight;
}
export class Card{
console.log('this is a card');
}
}
class Example {
const gold = gameConfig.TextColor.valueGolden;
}
在namespace命名空间中,我们可以声明变量,编写函数,编写类等等。
当我们在变量声明或者函数、类的编写之前使用export关键字后,我们就可以在命名空间之外找到它。当然有一些内部使用的,我们没有必要使用export关键字。