CodeQL 文档

无效的参数类型

ID: js/ineffective-parameter-type
Kind: problem
Security severity: 
Severity: warning
Precision: high
Tags:
   - correctness
   - typescript
Query suites:
   - javascript-security-and-quality.qls

点击查看 CodeQL 代码库中的查询

在 TypeScript 中,函数签名的参数必须有名称,并且可以选择有类型。一个常见的错误是试图省略名称。这意味着类型被视为名称。结果,由于没有给出类型,参数类型将默认为 any

函数签名中的参数名称仅与文档相关,但不能省略。

建议

为参数同时指定名称和类型,因为在没有名称的情况下无法指定类型。或者,如果参数是故意未类型的,请更改其名称,使其不与类型名称重合。

示例

在以下示例中,回调参数被写为 (T) => string,这实际上意味着 (T: any) => string,对于类型检查或代码完成没有用处。

function join<T>(items: T[], callback: (T) => string) {
  return items.map(callback).join(", ")
}

通过将回调类型更改为 (item: T) => string 来修正这一点。参数名称 item 仅与文档相关,但无论如何都需要一个名称。

function join<T>(items: T[], callback: (item: T) => string) {
  return items.map(callback).join(", ")
}

使用 TypeScript 标记 --noImplicitAny 编译时,未类型的参数是非法的。

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私