@Reflect.metadata生成错误TS1238:当作为表达式调用时,无法解析类装饰器的签名

Mic*_*Liu 6 typescript typescript1.7 reflect-metadata

我尝试将@Reflect.metadata装饰器应用于TypeScript类,遵循reflect-metadata.d.ts第82-84行的示例:

/// <reference path="node_modules/reflect-metadata/reflect-metadata.d.ts"/>

@Reflect.metadata('key', 0)
class C {
}
Run Code Online (Sandbox Code Playgroud)

但是,TypeScript 1.7.2编译器@Reflect.metadata在行上生成以下错误:

错误TS1238:当作为表达式调用时,无法解析类装饰器的签名.
无法调用类型缺少调用签名的表达式.

怎么了?

Rem*_*sen 0

来自 TypeScript文档

装饰器作为调用表达式进行检查

从1.6开始,装饰器类型检查更加准确;编译器将检查装饰器表达式作为调用表达式,并将装饰实体作为参数。这可能会导致报告以前版本中没有的错误。

我的猜测是,您可能需要使用较新版本的 TypeScript 或较旧版本的reflect-metadata.

最新版本是:

  • typescript@2.3.2
  • reflect-metadata@0.1.10