Visual Studio 代码:删除回调函数中未使用的参数中断代码
Visual Studio Code: Remove unused parameters on callback functions breaks code
背景
我在我的 TypeScript 项目中使用 Visual Studio 代码,我们都得到了越来越好的 IDE 函数的祝福,比如建议的变量名、建议的导入、建议的未使用变量等。
但是,我最近看到当我通过删除未使用的导入等清理文件时,回调函数中未使用的参数也会被删除,无论它们的顺序如何。
一个常见的例子是 Express 控制器函数,在我想不使用任何过滤器的情况下获取一些东西:
function getAllItems(req: Request, res: Response)
req
在此上下文中可能没有用。 Visual Studio 然后代码会简单地删除它,给我留下:
function getAllItems(res: Response)
不再符合回调函数签名。
我试过的
似乎有一个用于 TypeScript 的 "noUnusedParameters": true
选项,您可以将其放入 tsconfig.json。但是,我想保留对非回调函数的建议。
问题
如何更改 Visual Studio 代码的行为,以便保留不在最后位置的未使用参数,无论是否使用它?
虽然参数未使用的错误是有效的,但删除它的建议并非在所有情况下都没有副作用,尤其是当参数不是最终参数时。
根据您的使用情况和 express 的类型,理想情况下,参数较少的版本不应在预期的原始版本中分配。
function test(a: number, b: string) { console.log(b )}
let expected : (a: number, b: string) => void = test; // original is valid
function test(b: string) { console.log(b )}
let expected : (a: number, b: string) => void = test; // the version with the missing first parameter is not valid here
如果您需要保留未使用的参数而不是 运行 进入带有 noUnusedParameters
的编译错误,您需要使用 _
作为参数名称(或 __
或 ___
如果你有更多)
背景
我在我的 TypeScript 项目中使用 Visual Studio 代码,我们都得到了越来越好的 IDE 函数的祝福,比如建议的变量名、建议的导入、建议的未使用变量等。
但是,我最近看到当我通过删除未使用的导入等清理文件时,回调函数中未使用的参数也会被删除,无论它们的顺序如何。
一个常见的例子是 Express 控制器函数,在我想不使用任何过滤器的情况下获取一些东西:
function getAllItems(req: Request, res: Response)
req
在此上下文中可能没有用。 Visual Studio 然后代码会简单地删除它,给我留下:
function getAllItems(res: Response)
不再符合回调函数签名。
我试过的
似乎有一个用于 TypeScript 的 "noUnusedParameters": true
选项,您可以将其放入 tsconfig.json。但是,我想保留对非回调函数的建议。
问题
如何更改 Visual Studio 代码的行为,以便保留不在最后位置的未使用参数,无论是否使用它?
虽然参数未使用的错误是有效的,但删除它的建议并非在所有情况下都没有副作用,尤其是当参数不是最终参数时。
根据您的使用情况和 express 的类型,理想情况下,参数较少的版本不应在预期的原始版本中分配。
function test(a: number, b: string) { console.log(b )}
let expected : (a: number, b: string) => void = test; // original is valid
function test(b: string) { console.log(b )}
let expected : (a: number, b: string) => void = test; // the version with the missing first parameter is not valid here
如果您需要保留未使用的参数而不是 运行 进入带有 noUnusedParameters
的编译错误,您需要使用 _
作为参数名称(或 __
或 ___
如果你有更多)