JS TS 装饰器

装饰器

2021.07.07:
    今天面试的时候一时间没想起来,现在回想一下,这相当时`扩展作用域`,可以修改接下来的函数

装饰器是可以修改其他函数功能的函数,写法 @ + 函数名 在 Python 随处可见。

早期 TypeScript 在 1.5 版本发布了对装饰器的支持,现在 ES6 也通过了装饰器的提案,目前处于征集的第二阶段

在 Python 中的简单用法

def my_decorator1(fn):
    print("my decorator1")
    return fn

@my_decorator1
def my_func1():
    print("my function1")

my_func1()
# my decorator1
# my function1

这相当于

def my_decorator2(fn):
    def wrapper():
        print("my decorator2")
        return fn()
    return wrapper

def my_func2():
    print("my function2")

my_func = my_decorator2(my_func2)
my_func()
# my decorator2
# my function2 

在 JS/TS 中简单使用

装饰整个类

@testable
class MyTestableClass {
  // ...
}

function testable(target) {
  target.isTestable = true;
}

MyTestableClass.isTestable // true
posted @ 2021-07-08 09:16  to人间值得  阅读(63)  评论(0编辑  收藏  举报