在TypeScript playground上玩装饰器的时候,我注意到,在第3行的转换代码检查是否存在Reflect.decorate
函数。
这个功能是什么?我无法在SO和MDN documentation about Reflect
上找到这个。
答案 0 :(得分:8)
您的问题的答案就在于已编译代码的下一行:
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
要了解它,你需要记住这些事情:
现在,如果再次阅读,您会看到“Reflect.decorate”是一个方法,它遍历您要应用的装饰器列表,然后根据参数的数量识别装饰器的类型,最后调用具有正确参数的装饰器(基于它检测到的类型)。
Reflect.decorate
是否存在?因为在某些时候将来,他们希望Reflect.decorate
成为ES标准的一部分,然后相应地在浏览器中实现。在那一刻,他们宁愿使用本地方法而不是这种polyfill。
由于此方法是“ES.later”(甚至不是ES.next)的一部分,因此没有浏览器本机尚未实现它,因此没有人将文档记录为