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;
}
