【发布时间】:2021-07-08 18:08:37
【问题描述】:
我正在尝试修复 @typescript-eslint/ban-types lint 错误:
警告不要使用
Function作为类型 @typescript-eslint/ban-types
我同意Function 是一个不安全的类型,应该替换为适当的函数类型,例如() => void。
但是我的代码有点复杂,我不知道如何在这里避免它,因为我使用的是返回 Function 的typeof。
这是我的代码的简化版本。完整版是here。
function start<T>(args: unknown[], couldBeAFunction: T) {
if (typeof couldBeAFunction === 'function') {
runFunction(args, couldBeAFunction); // couldBeAFunction now is a Function
}
}
function runFunction<T extends Function>(args: unknown[], target: T) {
target.apply(args, args);
}
我不能用runFunction<T extends (...args: unknown[]) => unknown> 替换runFunction<T extends Function>,否则我会在runFunction 调用中收到以下错误:
'T & Function' 类型的参数不能分配给'(...args: unknown[]) => unknown' 类型的参数。 类型 'Function' 不匹配签名 '(...args: unknown[]): unknown'.ts(2345)
我该如何解决这个 lint 错误?
【问题讨论】: