typescript - ESLint: Hvordan finne unødvendige "async"-markører på funksjoner?


Jeg ønsker å fjerne alle async-modifikatorer fra funksjoner som ikke trenger det. Spesielt bør de som verken returnerer et løfte eller har noen await-kall, ikke merkes med async.

Jeg forstår at ikke alle kanskje ønsker dette, for eksempel kan en eldre kodebase ha mange av disse hvor det ikke er verdt å endre kallene. Men for en ny kodebase ønsker jeg å fjerne async hvor det er unødvendig, siden det gjør funksjonen enklere å bruke, og lettere å teste og forstå (det indikerer at funksjonen ikke er avhengig av noen asynkron oppførsel - selv om den fortsatt kan ha asynkrone sideeffekter).

Det er lett for noen av disse å slippe gjennom, spesielt i tilfeller der det eneste await-kallet i en async-funksjon blir flyttet ut, men utvikleren innser ikke at funksjonen ikke lenger trenger å være asynkron.

Finnes det en måte å sjekke dette med ESLint eller på annen måte? Jeg kom opp kort i et nettsøk.

Svar #1

Her er TS-regelen: @typescript-eslint/require-await

Og den vanilla JS ESLint-versjonen: require-await

Det bør forhindre enhver unødvendig async-merking.

Den markerer riktig et enkelt eksempel:

export async function a() {
  return 1;
}

Relaterte artikler