像打字稿一样的飞镖装饰器

Posted

技术标签:

【中文标题】像打字稿一样的飞镖装饰器【英文标题】:Dart Decorators Like Typescript 【发布时间】:2022-01-15 09:54:36 【问题描述】:

我是 Typescript 后台开发人员,我可以像 typescript 一样在 dart 或 kotlin 中创建装饰器吗? 喜欢这段代码:

  const enumerable = (value: boolean) => 
  return (target: any, memberName: string, propertyDescriptor: PropertyDescriptor) => 
    propertyDescriptor.enumerable = value;
  

【问题讨论】:

【参考方案1】:

dart 语法中的相同代码是:

final enumerable = (bool value) 
  return (Object target, String memberName, PropertyDescriptor propertyDescriptor) 
    propertyDescriptor.enumerable = value;
  ;
;

在 kotlin 语法中应该是:

val enumerable =  value: Boolean -> 
     target: Object, memberName: String, propertyDescriptor: PropertyDescriptor -> 
        propertyDescriptor.enumerable = value
     

【讨论】:

可以像@enumerable一样使用吗? 我不确定你的意思。你能进一步解释一下吗? 像这样 const enumerable = (value: boolean) => return (target: any, memberName: string, propertyDescriptor: PropertyDescriptor) => propertyDescriptor.enumerable = value; 类人 firstName: string = "Jon" lastName: string = "Doe" @enumerable(true) getFullName () return $this.firstName $this.lastName; 在这种情况下,不,在 dart 中,您可以使用任何具有 const 构造函数的类作为注释,而在 kotlin 中,您将定义一个 annotation class。但都不支持使用函数/函数字面量作为注解。

以上是关于像打字稿一样的飞镖装饰器的主要内容,如果未能解决你的问题,请参考以下文章

打字稿方法返回未定义的方法装饰器

打字稿装饰器不能使用箭头函数

打字稿装饰器与类继承

打字稿装饰器和箭头函数

带有继承的打字稿装饰器

类装饰器上的打字稿文档-返回“类扩展构造函数”的函数