gpt4 book ai didi

typescript - ECMAScript 2016 装饰器是否使 TypeScript 装饰器变得多余?

转载 作者:搜寻专家 更新时间:2023-10-30 21:24:03 26 4
gpt4 key购买 nike

TypeScript 是 ECMAScript 2015 的严格超集,并且已经具有装饰器支持。这是否意味着随着 ECMAScript 2016 装饰器的引入,TypeScript 装饰器变得多余,或者这是否意味着 future TypeScript 必须更改其底层实现以生成 ECMAScript 2016 装饰器?

最佳答案

正如 docs regarding decorators 中所述:

Decorators are an experimental feature that may change in future releases

Typescript 通过将输出编译成与目标环境匹配的 js,让您可以使用尚未在所有 js 环境中实现的 future 功能。

例如:

function deco(constructor: Function) { }

@deco
class A { }

编译成:

var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
function deco(constructor) { }
var A = (function () {
function A() {
}
return A;
}());
A = __decorate([
deco
], A);

如您所见,js 版本包含使其工作所需的一切。
如果发生变化,那么是的,编译器将更改为输出正确的 js。

关于typescript - ECMAScript 2016 装饰器是否使 TypeScript 装饰器变得多余?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42070415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com