草庐IT

javascript - babel 装饰器和 TypeScript 的一样吗?

我经常使用TypeScript编写代码,但很少使用babel,我知道TypeScript如何在装饰器上工作,而babel也支持装饰器,它们的行为是否相同? 最佳答案 是的,它们是相同的,从某种意义上说它们产生相同的行为,但它们有不同的实现。两者都遵循ECMAScript规范并尽早为我们带来功能。您可以预期它们两者上的内容将来可能会受到节点或浏览器的支持。代码:functionf(){console.log("f():evaluated");returnfunction(target,propertyKey,descriptor){c

JavaScript 装饰器模式。错误 : Maximum call stack size exceeded

这是装饰器模式的一个工作示例:classDummy{run(){console.log('run');}}functionget(){letinstance=newDummy();instance.run=((func)=>{returnfunction(){func();console.log('decoratorrun');}})(instance.run);returninstance;}letobj=get();obj.run();但是,如果我们将get函数更改为:functionget(){letinstance=newDummy();instance.run=functio

javascript - 关于何时在 TypeScript 中调用装饰器的困惑

我的印象是TypeScript中的装饰器是在类的构造函数之后调用的。但是,有人告诉我其他情况,例如,this的最佳答案post声称Decorators在声明类时被调用——而不是在实例化对象时调用。我参加的一门Angular类(class)的Udemy讲师还告诉我,Typescript中的装饰器在属性初始化之前运行。但是,我在这个主题上的实验似乎表明情况并非如此。例如,这是一段带有属性绑定(bind)的简单Angular代码:test.component.tsimport{Component,Input}from'@angular/core';@Component({selector:'

javascript - JS 装饰器的 ESLint 意外字符 '@'

我试图在我的JS项目中使用装饰器,但是ESLint抛出一个错误,指出@符号是一个意外的字符。我的代码:@observableitems=[];我的.eslintrc:{"parserOptions":{"ecmaVersion":6,"ecmaFeatures":{"jsx":true},"sourceType":"module"},"env":{"browser":true,"node":true,"es6":false},"ecmaFeatures":{"modules":true},"rules":{"strict":[2,"global"],"quotes":[2,"singl

javascript - JavaScript 装饰器的意义何在?

我在谷歌上搜索了JavaScript装饰器,但我不确定使用装饰器调用函数和正常调用函数之间有什么区别。functionmyFunction(text){console.log(text)}myFunction()对比@myFunction对比@myFunction()我觉得我在这里错了。谁能解释一下? 最佳答案 装饰器用于装饰函数。假设您想要键入自己的装饰器,它可用于查看函数需要运行多长时间。你可以写一个装饰器@time()来做这件事。完成后,您可以在要跟踪的每个函数之前使用此装饰器。装饰器用作高阶函数,主要是让您的代码具有功能组合

javascript - 使用装饰器将属性分配给非原型(prototype)

我正在构建前端/后端数据结构之间的简单映射。为此,我创建了一个如下所示的装饰器:functionApiField(apiKey:string,setFn:(any)=>any=(ret)=>ret,getFn:(any)=>any=(ret)=>ret){returnfunction(target:AbstractModel,propertyKey:string){target.apiFieldsBag=target.apiFieldsBag||{};_.assign(target.apiFieldsBag,{[propertyKey]:{apiKey:apiKey,setFn:set

javascript - 这是一个很好的 javascript 装饰器模式吗?

我需要一些简单的对象,这些对象以后可能会变得更复杂,具有许多不同的属性,所以我想到了装饰器模式。我在查看Crockford的电源构造函数和对象扩充时做了这个://addpropertytoobjectObject.prototype.addProperty=function(name,func){for(propertyNameinthis){if(propertyName==name){thrownewError(propertyName+"isalreadydefined");}}this[name]=func;};//constructorofbaseobjectvarBasic

javascript - 如何避免对此进行硬编码?在装饰器中

我已阅读"Howtoimplementatypescriptdecorator?"和多个来源,但有些事情我无法使用装饰器来完成。classFooBar{publicfoo(arg):void{console.log(this);this.bar(arg);}privatebar(arg):void{console.log(this,"bar",arg);}}如果我们调用函数foo:varfoobar=newFooBar();foobar.foo("test");对象FooBar由console.log(this);登录到控制台在foo字符串"FooBar{foo:function,ba

javascript - 关注点、装饰者、演示者、服务对象、帮助者 - 帮助我理解它们

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭7年前。ImprovethisquestionRails中有一些东西:##Concerns##Decorators##Presenters##ServiceObjects##Helpers任何人都可以给我在什么类型的情况下应该遵循什么的真实问题示例,以便我可以更好地理解这些功能。例子会更好地理解这个概念在此先感谢并感谢您的关注

go - 一个通用的 golang 装饰器(要点需要澄清)

有人可以解释这个要点中发生了什么吗?我了解装饰器的概念以及此实现如何让人们创建通用装饰器,但我在几个部分(内联评论)中几乎没有迷失。如果有人能为我分解它,我将不胜感激。此外,如果这不是编写通用装饰器的最佳方式,那什么才是?我正在寻找一种装饰器,它可以装饰func(args...interface{})(interface{},error)类型的函数,而不会丢掉类型安全性。https://gist.github.com/saelo/4190b75724adc06b1c5apackagemainimport("fmt""reflect")funcDecorate(implinterface