跳过类型检查未使用的参数

Zyp*_*rax 11 unused-variables typescript

当我编译我的打字稿项目时,我正在使用该noImplicitAny选项,以便我不会忘记在我的变量和参数上指定类型.

但是,有时您会有不使用的参数.例如:

jQuery.ajaxTransport("+*", function (options: JQueryAjaxSettings) {
  return {
    abort: function (_, callback: JQueryCallback) { 
Run Code Online (Sandbox Code Playgroud)

我对中止函数的第一个参数不感兴趣,所以我通过命名它来忽略它.

这是在TypeScript中这样做的正确方法吗?我在指南中找不到它.我怀疑这不是正确的方法,因为我只能命名一个参数_.

Typescript引发以下错误:

错误TS7006:参数'_'隐式具有'any'类型.

我可以输入,_:any但对于我不使用的参数来说,这似乎有点矫枉过正.

Kei*_*ith 18

我遇到了同样的问题.使用say express和routing,您通常只需要res参数.

router.get('/', function (req, res) { res.end('Bye.'); });
Run Code Online (Sandbox Code Playgroud)

你使用_的想法在这里起作用,但我也发现这样做也有效.

function (_1, _2, _3, onlyThis) { console.log(onlyThis); }
Run Code Online (Sandbox Code Playgroud)

这似乎更好,因为我认为只使用'_'可能会使lodash/underscore有点混乱,而且它也很明显它是你感兴趣的第四个参数.

  • 我不明白为什么这会得到投票:`Parameter '_' 隐式具有 'any' 类型。` 仍然是一个非常有效的错误 (7认同)
  • 编号参数是否也不具有隐含的"任何"类型?这是OP试图解决的问题. (2认同)

Mia*_*aow 10

我可能迟到了,但我陷入了其他解决方案的困扰,而这个解决方案一直对我有用:

function ({}={}, {}={}, {}={}, onlyThis) { console.log(onlyThis); }
Run Code Online (Sandbox Code Playgroud)

比较

当使用_0_1,...的解决方案,我面临着舀功能类似的困难:

function parent(_0, _1, _2) {
  function child(_0, _1, _2) {
    // TypeScript crying about shallowed variables
  }
}
Run Code Online (Sandbox Code Playgroud)

但是使用空对象可以很好地工作:

function parent({}, {}, {}) {
  function child({}, {}, {}) {
    // :-)
  }
}
Run Code Online (Sandbox Code Playgroud)

即使参数输入如下:

function parent({}: number, {}: string, {}: any) {
  function child({}: number, {}: string, {}: any) {
    // :-) x2
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑:

如此处所述,如果给定参数为undefined或,则设置默认值可避免引发错误null

function parent({}={}, {}={}, {}={}) {
  function child({}={}, {}={}, {}={}) {
    // :-)
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 这太可怕了。我喜欢它。 (5认同)
  • 根据链接的答案,这只可以避免在传递“undefined”时抛出,而不是在传递“null”时抛出。 (2认同)