简介:
个人理解:TypeScript中的命名空间其实是为功能文件做一个归类。
比方说我们所使用的的学校案例,我们的学生类,人类,学校类都可以在一个命名空间下进行定义。
一. 先来看下用命名空间的第一种写法
namespace MySchool {
class People {
// 姓名, 默认小明
private name: string = '小明';
// 年龄, 默认18
private age: number = 18;
// 性别, true = 男, false = 女
private sex: boolean = true;
// 爱好, 默认 吃,玩
private hobby: Array<string> = ['吃', '玩'];
// 类型方法声明,方法的返回值强制固定。
getName(): string {
return this.name;
}
getAge(): number {
return this.age;
}
getSex(): boolean {
return this.sex;
}
getHobby(): Array<string> {
return this.hobby;
}
setSex(value: boolean) {
this.sex = value;
}
setName(value: string) {
this.name = value;
}
setAge(value: number) {
this.age = value;
}
setHobby(value: Array<string>) {
this.hobby = value;
}
toString(): string {
let printString = `name:${this.name} , age:${this.age} , sex:${this.sex} , hobby:${this.hobby}`;
return printString;
}
printInfo(): void {
console.log(`name:${this.name}, age:${this.age}, sex:${this.sex}, hobby:${this.hobby}`);
}
}
export class Student extends People {
// 年级, 默认1
private _grade: number = 1;
// ts中的get方法。
get grade(): number {
return this._grade;
}
set grade(value: number) {
this._grade = value;
}
toString(): string {
return super.toString() + `, grade:${this.grade}`;
}
printInfo(): void {
super.printInfo();
console.log(`grade:${this.grade}`);
}
}
export class School {
// 学校名称,默认希望小学
name: string = '希望小学';
// 学校里的学生,默认空
studentList: Array<Student> = [];
// any方法声明,没有限制方法的返回值。
printInfo() {
console.log(`name:${this.name}, studentList:${this.studentList.toString()}`);
}
}
}
export default MySchool
这种写法其实就是将三个类文件都写在一个叫 MySchool 的命名空间下,并且还是写在了一个文件中。
测试下效果:
import MySchoolNameSpace from './MySchool';
let school = new MySchoolNameSpace.School();
let student = new MySchoolNameSpace.Student();
// School { name: '希望小学', studentList: [] }
console.log(school);
// Student { name: '小明', age: 18, sex: true, hobby: [ '吃', '玩' ], _grade: 1 }
console.log(student);
school.studentList.push(student);
school.name = '杨浦区实验小学';
/**
* School {
name: '杨浦区实验小学',
studentList:
[ Student { name: '小明', age: 18, sex: true, hobby: [Array], _grade: 1 } ] }
* */
console.log(school)