Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript @Reflect.metadata生成错误TS1238:作为表达式调用时无法解析类装饰器的签名_Typescript_Typescript1.7_Reflect Metadata - Fatal编程技术网

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

Typescript @Reflect.metadata生成错误TS1238:作为表达式调用时无法解析类装饰器的签名,typescript,typescript1.7,reflect-metadata,Typescript,Typescript1.7,Reflect Metadata,我尝试将@Reflect.metadata装饰器应用于TypeScript类,如下第82-84行的示例所示: // @Reflect.metadata('key',0) C类{ } 但是,TypeScript 1.7.2编译器在@Reflect.metadata行生成以下错误: 错误TS1238:作为表达式调用时无法解析类装饰程序的签名。 无法调用其类型缺少调用签名的表达式 怎么了?来自打字脚本: 装饰符被检查为调用表达式 从1.6开始,装饰师类型检查更准确编译器将检查装饰器表达式作为调用表达

我尝试将
@Reflect.metadata
装饰器应用于TypeScript类,如下第82-84行的示例所示:

//
@Reflect.metadata('key',0)
C类{
}
但是,TypeScript 1.7.2编译器在
@Reflect.metadata
行生成以下错误:

错误TS1238:作为表达式调用时无法解析类装饰程序的签名。
无法调用其类型缺少调用签名的表达式

怎么了?

来自打字脚本:

装饰符被检查为调用表达式

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

我猜您可能需要使用较新版本的TypeScript或较旧版本的
reflect metadata

最新版本包括:

  • typescript@2.3.2
  • 反映-metadata@0.1.10

解决方案是将decorator函数的所有参数标记为可选:

函数日志类型(a?:任意,b?:任意){
控制台日志(a,b);
}
@对数型
类MyClass{…}
然后根据您的需要进行调整

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

@Reflect.metadata('key', 0)
class C {
}