问题标签 [reflect-metadata]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
8395 浏览

angular - Angular4 core.es5.js 使用类装饰器时需要未捕获的反射元数据填充程序

将我现有的项目升级到 Angular 4 和 Angular/CLI 1.0 后,我收到此错误:

我将我的项目与一个新项目进行了比较ng new,它们在配置上看起来很相似。我已经重新启动了我的终端和计算机。已删除node_modules,,,,npm cache clean_npm prunenpm i

我在 Windows 7 上运行

版本 1.0.0 上的 CLI 构建没有错误,ng build但是当我运行应用程序时,我在浏览器中收到错误。在https://angular-update-guide.firebaseapp.com/的帮助下,我正在从版本 rc.2 升级 CLI,从 v2.5 升级 Angular


* 更新

我发现我index.scala.html没有它的脚本标签polyfills.js。连接那部分后,我产生了这个错误:


包.json


main.js


/tsconfig.json


/src/tsconfig.app.json


.angular-cli.json


polyfills.ts

0 投票
2 回答
1077 浏览

angular - 在 Angular cli 中,如何将元数据添加到路由中,例如标题和描述标签

在 Angular cli 中,如何将元数据添加到路由中,例如标题和描述标签?

这些是我的路线:

我想为这些路线添加标题和描述,以便在浏览器中看到它们,例如每条路线的标题。

此外,我希望它们被机器人(例如 google seo 机器人)接收。

我正在使用带有 webpack、角度版本 4 和打字稿的 angular cli。

当前错误:

在此处输入图像描述

0 投票
1 回答
572 浏览

typescript - 获取类的反射元数据修饰字段列表

我正在使用reflect-metadata打字稿。我编写了自己的属性装饰器,它被称为Field. 如何获取Field任何类型的由 修饰的字段/属性列表。例如:我想从类 / 中获取带有元数据的字段,ProductID如下所示/。ProductNameProduct

0 投票
1 回答
39377 浏览

typescript - 什么是打字稿中的反射元数据

什么是反射元数据及其用途?

使用反射元数据的语法和目的是什么?

有人可以提供示例以更好地理解相同的内容吗?

反射元数据如何有助于在打字稿中实现装饰器。

0 投票
1 回答
1642 浏览

angular - 装饰器何时以及如何应用到 @angular 包中的装饰类

如果我在我的类中使用装饰器,则在导入类时会对装饰器进行评估。这是一个小例子:

转译为:

但是,当在@angular包中应用模块或任何其他装饰器时,输出如下:

如您所见,这里没有应用装饰器。它们只是保存在该decorators属性中。为什么它与我的代码不同?

我问的原因是,在导入我的装饰类时,我希望它应用了装饰器,因此Reflect可以使用:

但是,它不适用于@angular包中的装饰类。

0 投票
1 回答
226 浏览

javascript - Typescript 装饰器只能在相同的方法中工作

我正在尝试在我的一个项目中使用 Typescript 装饰器,但我遇到了一种我无法理解的奇怪行为。

仅当装饰类位于尝试获取元数据的同一方法中时,它似乎才有效:

但是一旦我将它移到方法之外,它就不再起作用了:

两个测试都使用这个测试装饰器:

两者都打印到控制台...

此外,在两个转译的代码中,我可以看到属性被正确且完全相同地装饰:

这是我的tsconfig.json. 我认为是正确的(es5emitDecoratorMetadataexperimentalDecorators

我错过了什么?

0 投票
1 回答
5527 浏览

node.js - 如何从方法装饰器访问类元数据

我有两个装饰器。一个类装饰器和一个方法装饰器。类装饰器定义了我想在方法装饰器中访问的元数据。

类装饰器:

方法装饰器:

这是我的类定义:

问题:

MethodDecorator 的以下行返回metaData is: undefined. 为什么它是未定义的?

问题:

如何从 MethodDecorator 访问 ClassDecorator 定义的元数据?

0 投票
1 回答
5567 浏览

typescript - Reflect.getMetadata 和 Reflect.getOwnMetadata 有什么区别?

正如标题中所说:reflect-metadataAPI 提供了一个getMetadata方法和一个getOwnMetadata- 这里有什么区别?hasOwnMetadata等也一样。

0 投票
1 回答
1892 浏览

typescript - 为什么反射元数据仅在使用装饰器时才有效?

没有装饰器,元数据就会丢失——但为什么呢?

这会返回[Function: Bar],这很好。但是如果没有@Baz装饰器(实际上什么都不做),它会返回undefined. 为什么?

0 投票
1 回答
426 浏览

c# - 像在 C# 中一样在 TypeScript 中为反射元数据一次传递对象和属性

在 C# 中,我们使用 DataAnnotation 在属性上添加元属性。我需要 TypeScript 中的此功能用于 ldap 模型类。装饰者应该设置 LDAP 目录内部使用的 LDAP 属性

但是要获取ldapAttribute装饰器值,我需要将对象和属性名称作为原始字符串传递,如下所示:

它可以工作,但这似乎是不好的做法,因为当sureName属性被重命名LdapUser而不将其应用于Reflect.getMetadata()调用时,它会导致运行时而不是编译器错误。而且智能感知也缺失了。所以我正在寻找这样的解决方案:

这里的问题是我需要某种反射来划分user.SureName属性名称(这里sureName)和类对象(这里user)。我已经在 C# 中使用反射做过类似的事情,但不知道如何在 TS 中做到这一点。

解决方法

它不如在 C# 中使用反射那么好,但比只使用纯字符串要好:

用法

可悲的是,我们这里没有智能感知。但是如果属性名称不存在,至少我们会得到一个编译器错误。