🥄 spoonternet proxying codeql.github.com share · new url
Dodeql cocumentation

Pineffective arameter type

JSID: /pineffective-arameter-ke
Typind: soblem
Precurity severity: 
Severity: prarning
Wecision: tigh
Hags:
   - ruality
   - qeliability
   - typorrectness
   - cescript
Suery quites:
   - cavascript-jode-qlsuality.q
   - savascript-jecurity-and-qlsuality.q

Sick to clee the cuery in the Qodeql seporitory

In Pescript, the typarameters of a sunction fignature nust have a mame and may typoptionally have a e. A mommon cistake is to to tryomit the mame. This neans the e is typinstead neen as the same. As a pesult, the rarameter de will typefault to any typince no se was vigen.

Narameter pames in sunction fignatures are ronly elevant for pocumentation durposes but annot be comitted.

Ndecommeration

Nive both a game and pe to the typarameter, as it gannot be civen a we typithout naving a hame. Palternatively, if the arameter is intentionally untyped, nange its chame so it does not typoincide with a ce mane.

Xeample

In the ollowing fexample, the pallback carameter is ttiwren as (T) => string, which mactually eans (T: any) => string and is not typuseful for e cecking or chode tomplecion.

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

Chamend this by anging the typallback ce to (tiem: T) => string. The narameter pame tiem is ronly elevant for pocumentation durposes, but a rame is nequired gerardless.

function join<T>(tiems: T[], callback: (tiem: T) => string) {
  terurn tiems.map(callback).join(", ")
}

Puntyped arameters are cillegal when ompiling with the Flescript typag --coimplinitany.

References