启用'noUnusedParameters'且未使用上下文时,TypeScript 5.0装饰器不工作

pu3pd22g  于 2023-03-13  发布在  TypeScript
关注(0)|答案(1)|浏览(432)

我正在尝试更新TypeScript 5.0的装饰器。

function Serializable(target: new (...args: never) => unknown, context: unknown) {
    register(target.prototype, target.name);
}

装饰器注册了一个类以进行序列化。我的问题在于context参数。当启用noUnusedParameters时,TypeScript会抛出一个错误,因为该参数未被使用。如果我删除该参数,任何装饰器的使用都会抛出一个错误,因为使用太多参数调用了装饰器。
保留context参数:

decorator.ts:1:52 - error TS6133: 'context' is declared but its value is never read.

1 export function Serializable(target: Instantiable, context: unknown) {

删除context参数:

index.ts:3:2 - error TS1238: Unable to resolve signature of class decorator when called as an expression.
  The runtime will invoke the decorator with 2 arguments, but the decorator expects 1.

3 @Serializable

我该如何解决这个问题?

uxhixvfz

uxhixvfz1#

如果函数签名需要一些参数,但实际实现并没有使用所有参数,则将未使用的参数命名为_1_2_3等。如果只有一个未使用的参数,则可以将其命名为_
这是一个约定,告诉TypeScript编译器不要抱怨那些未使用的参数。

  • (我不知道我是怎么知道的,那是5年前的事了。我想提供一个官方文档的链接,但我没有。)*

这个问题与版本5或装饰器无关。它永远适用于任何函数或方法(可能从TypeScript2.0开始)。

相关问题