Skip to content

命名空间

使用命名空间来将某些数据按区域划分

1.定义语法

命名空间的注意项

  • 通过namespace关键字定义命名空间
  • 命名空间内的数据只能在当前命名空间内使用,别处不能直接使用
ts
namespace GradeOne {
	const name: string = '九年级'
	const peopleNum: number = 60
	const askQuestion = (name: string): void => {
		console.log(`${name}同学回答问题`)
	}

	askQuestion('ikun') //ikun同学回答问题
}

namespace GradeTow {
	const name: string = '大一'
	const peopleNum: number = 90
	const askQuestion = (name: string): void => {
		console.log(`${name}同学回答问题`)
	}

	askQuestion('夏至') //夏至同学回答问题
}

2.使用命名空间

若想在别处使用命名空间内的数据,前提是要将命名空间的数据先导出,使用export导出数据

使用时通过.操作符访问命名空间内数据

ts
namespace GradeOne {
	export const name: string = '九年级'
}

console.log(GradeOne.name)

可以使用import导入需要使用的数据

ts
namespace GradeOne {
	export const name: string = '九年级'
	export const peopleNum: number = 60
	export const askQuestion = (name: string): void => {
		console.log(`${name}同学回答问题`)
	},
}

import askQuestion = GradeOne.askQuestion
askQuestion('ikun')

也可以解构赋值

ts
namespace GradeOne {
	export const gradeName: string = '九年级'
	export const peopleNum: number = 60
	export const askQuestion = (name: string): void => {
		console.log(`${name}同学回答问题`)
	}
}

const { gradeName,peopleNum, askQuestion } = GradeOne

console.log(peopleNum)

3.命名空间嵌套

命名空间可以嵌套,使用也是通过.操作符一层一层访问,注意导出数据

ts
namespace Space1 {
	export namespace Space2 {
		export namespace Space3 {
			export const namn: string = 'ikun'
		}
	}
}

console.log(Space1.Space2.Space3.namn)

4.命名空间合并

多个同名的命名空间会自动合并

ts
namespace Space1 {
	export const name: string = 'ikun'
}

namespace Space1 {
	export const age: number = 18
}
console.log(Space1.name)  // ikun
console.log(Space1.age)		// 18

不想写了,ts的命名空间狗屎一坨,狗都不用

MIT Licensed