//装饰器
export{}
// 1.类装饰器 用来监视 修改 替换类的定义
namespace a {
function addNameEat( constructor: Function) {
constructor.prototype.name = '111'
constructor.prototype.eat = function() {}
}
@addNameEat
class Person {
name: String
eat: Function
constructor() {
}
}
let p1:Person = new Person()
console.log(p1.name);
p1.eat()
}
// 2.类装饰器工厂
namespace b {
function addNameEatFactory( name:string) {
return function addNameEat( constructor: Function) {
constructor.prototype.name = name
constructor.prototype.eat = function() {}
}
}
@addNameEatFactory('222')
class Person {
name: String
eat: Function
constructor() {
}
}
let p1:Person = new Person()
console.log(p1.name);
p1.eat()
}
// 3.类的装饰器用来替换类
namespace c {
function replaceClass (constructor:Function) {
return class {
//此处的属性比原来多可以但是比原来少不行
name: string
ts学习第四篇 装饰器
最新推荐文章于 2024-04-08 00:11:09 发布