我正在尝试更新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
我该如何解决这个问题?
1条答案
按热度按时间uxhixvfz1#
如果函数签名需要一些参数,但实际实现并没有使用所有参数,则将未使用的参数命名为
_1
、_2
、_3
等。如果只有一个未使用的参数,则可以将其命名为_
。这是一个约定,告诉TypeScript编译器不要抱怨那些未使用的参数。
这个问题与版本5或装饰器无关。它永远适用于任何函数或方法(可能从TypeScript2.0开始)。