如何将附加参数传递给 TypeScript 中的属性装饰器?

2024-01-01

我有一个简单的类,它的属性有物业装饰师 https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Decorators.md#property-decorators应用于它:

class MyClass {
    @collectionMember
    public myProperty: number[];

    // ...
}

以及装饰器函数:

function collectionMember(target: Object, propertyKey: string | symbol): void {
    // ...
}

我怎样才能通过额外的装饰器函数的参数?我尝试执行以下操作但无济于事:

class MyClass {
    @collectionMember("MyProp")
    public myProperty: number[];

    // ...
}

显然,这会产生错误

提供的参数与调用目标的任何签名都不匹配。


可以通过使用装饰器工厂来完成。

工厂只是一个函数,它接收您想要的任何参数并返回带有装饰器签名的函数:

// any parameters, even optional ones!
function collectionMember(a: string, b?: number) {
    // the original decorator
    function actualDecorator(target: Object, property: string | symbol): void {
        // do something with the stuff
        console.log(a);
        console.log(target);
    }

    // return the decorator
    return actualDecorator;
}

然后你就可以按照你描述的那样使用它了。

class MyClass {
    @collectionMember('MyProp') // 2nd parameter is not needed for this array
    public myProperty: number[] = [1, 2, 3, 4, 5];

    // ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将附加参数传递给 TypeScript 中的属性装饰器? 的相关文章

随机推荐

  • 浏览器(chrome、firefox)jquery .val() 不适用于自动填充输入字段(用户名、密码)

    仅当长度不为 0 并且用户名和密码不为空等情况下 才会执行此代码以启用登录按钮 这很好用 但是 如果我将登录凭据保存在浏览器中并且访问该网站并看到字段已预先填充 则 val 函数似乎不会返回值 如果我按任意键 登录按钮就会启用 所以 初始化
  • Windows 上出现“无法找到 PyAudio;检查安装”错误

    我在 python 中有简单的代码来识别我的声音并将其转换为文本 我正在使用语音识别 但我收到错误 找不到 PyAudio 检查安装 怎么修 这是我的代码 import speech recognition as sr r sr Recog
  • 我如何使用 Mercurial (hg) 拥有多个工作区?

    我只是想了解 Mercurial 所以这可能是一个愚蠢的问题 打开 我希望在我的机器上编译一个程序的多个版本 例如 我可能需要在调试器中单步执行 工作版本 和 蕨 版本 直到找到不同的行为方式 我还喜欢在完成检查后签出到一个干净的工作区 这
  • 如何避免核心数据警告“实体应该具有反向关系”?

    我有一个模型图 其中有几个实体与其他实体具有一对多的关系 这意味着反向关系应该是一对多 但这是不可能的 核心数据运行良好 无反比关系 唯一让我发疯的是警告 实体应该具有逆关系 有人知道如何避免这些特定警告吗 反向关系 大多数关系本质上是双向
  • 我可以更改 C# WebMethod 中的参数名称吗?

    C WebMethod 是否可以接受与其客户端发送的参数名称不同的参数名称 例如 假设客户端发送此消息
  • mplfinance 中是否有相当于 plt.scatter 的东西?如何在 mplfinance 中绘制数据点图表?

    mplfinance 中 plt scatter 的等价物是什么 我正在使用 mpl Finance 绘制股票价格图表 def graph file prices1 xlsx data pd read excel file sheet na
  • requireJS 可选依赖

    我正在将 AMD 支持添加到我开发的 JavaScript 库中 该库可能使用 jquery 但如果未加载 jquery 它仍然可以工作 定义模块依赖项时 有一种方法可以将依赖项设置为 可选 这样如果缺少该库 该模块仍然可以工作 我最近遇到
  • Swift:如何从表视图中删除重复项?

    这里的问题是我的表视图中出现重复项 我知道为什么 但我不知道如何修复它并实现不同的系统 我的应用程序是一个博客阅读器 它使用 PHP 从 MYSQL 数据库读取数据 然后将 JSON 发送到我的 Swift 应用程序 我的表视图有两个部分
  • Javascript/jQuery 动画到动态高度?

    有谁知道为什么这个动画效果很好 function setContainerHeight pagecontainer animate height 700px 500 即固定高度 但这根本不动画 function setContainerHe
  • 在控制台中同时输入和输出

    一个线程将值无限地打印到控制台 另一个主线程从控制台获取用户输入 但输入值与该线程的输出混合 C cin 同时 cout https stackoverflow com questions 27650706 c cin while cout
  • 拍照时 Uri 必须不为 null 或为空

    我试图在按下 CircleImageView 时拍照 拍摄照片后裁剪它 然后开始上传到 Firebase 问题是我按下并且相机正确打开 但是当我拍照时应用程序崩溃 向我发送此错误Failure delivering result Resul
  • WKWebView 函数用于检测 URL 是否已更改

    WKWebView 类是否有一个函数可以让您检测到该 WebView 的 URL 何时发生更改 The didCommit and didStartProvisionalNavigation在使用 WebView 中的某些元素时 函数似乎并
  • Jquery - 延迟鼠标移出事件

    有没有办法让 jQuery 在之前等待一定的时间mouseout事件被解雇 目前它触发得太早 我宁愿等待 500 毫秒 然后再评估鼠标的离开 下面是我使用的代码示例 under construction this bind mousemov
  • asp.net web表单json返回结果

    我使用 asp net 和 Web 表单 在我的项目中我有 asmx Web 服务 WebMethod public string GetSomething avoid circual reference parent child List
  • 使用Python提取目录中所有pdf文档的页数

    我正在尝试使用 PyPDF2 来获取目录中每个 pdf 的页数 我可以使用 getNumPages 查找一个 pdf 文件中的页数 但我需要遍历一个目录并获取每个文件的页数 有任何想法吗 这是我到目前为止的代码 import pandas
  • 在 Bootstrap 3 中创建基础风格的块网格?

    在 Zurb Foundation 3 中 它们有一个 块网格 的 CSS 构造 它是一个无序列表 您可以在其中指定一行中的项目数 这是他们的文档 http foundation zurb com docs components block
  • 文件名中带有空格的 sqlcmd 脚本

    我有一个简单的SQLCMD脚本包含如下几行 Load data into Exampletable BULK INSERT dbo Example NOTE I ve tried single AND double quotes here
  • c# - 有没有办法制作固定(高度/宽度)控制台?

    我一直在 microsoft Visual Studio 2013 中闲逛 我制作了一个控制台应用程序 但我想知道是否有一种方法可以为其设置固定大小 高度 宽度 这意味着它无法调整大小 如果有人知道这是否可行 如果您能帮助我 我将不胜感激
  • 在 java 8 中将字符串转换为 Map

    有人可以指导我如何使用 Java 8 实现以下目标吗 我不知道如何将该计数器作为密钥 String str abcd Map
  • 如何将附加参数传递给 TypeScript 中的属性装饰器?

    我有一个简单的类 它的属性有物业装饰师 https github com Microsoft TypeScript Handbook blob master pages Decorators md property decorators应用