无效的参数类型¶
ID: js/ineffective-parameter-type
Kind: problem
Security severity:
Severity: warning
Precision: high
Tags:
- correctness
- typescript
Query suites:
- javascript-security-and-quality.qls
在 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
编译时,未类型的参数是非法的。