使用命名空间扩展类、函数和枚举
使用命名空间扩展类
我们可以使用 namespace 来扩展类,用于表示内部类。
class Person {
label: Person.PersonInfo;
}
// PersonInfo 为 Person 的内部类
namespace Person {
// 为了让 PersonInfo 可被访问,这里需要用 export 导出
export class PersonInfo {}
}
使用命名空间扩展函数
我们也可以使用 namespace 来扩展函数
function sayHi(name: string): string {
return sayHi.pre + name + sayHi.next;
}
// 为 sayHi 函数扩展了 pre 和 next 属性
namespace sayHi {
export let pre = "Hello,";
export let next = "nice to meet you!";
}
使用命名空间扩展枚举类型
// demo 出处:https://www.typescriptlang.org/docs/handbook/declaration-merging.html
enum Color {
red = 1,
green = 2,
blue = 4
}
// 为枚举类型 Color 扩展了 mixColor 方法
namespace Color {
export function mixColor(colorName: string) {
if (colorName == "yellow") {
return Color.red + Color.green;
} else if (colorName == "white") {
return Color.red + Color.green + Color.blue;
} else if (colorName == "magenta") {
return Color.red + Color.blue;
} else if (colorName == "cyan") {
return Color.green + Color.blue;
}
}
}