TS2854
TypeScriptERRORNotableTypeHIGH confidence

Top-level 'await using' statements are only allowed when the 'module' option ...

Production Risk

Build will fail; resolve before shipping.

What this means

A type-checking error (TS2854): Top-level 'await using' statements are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher.. This diagnostic is emitted by the TypeScript compiler when top-level 'await using' statements are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher..

Why it happens
  1. 1await used outside an async function, or async/await return type mismatch
How to reproduce

TypeScript compiler reports TS2854 during type checking.

trigger — this will error
trigger — this will error
// Triggers TS2854
// Top-level 'await using' statements are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher.

expected output

error TS2854: Top-level 'await using' statements are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher.

Fix

Add 'async' to the containing function

WHEN Using await outside an async function

Add 'async' to the containing function
// Mark the function as async
async function fetchData() {
  const result = await fetch('/api/data');
  return result.json();
}

Why this works

await can only be used inside async functions; the 'async' keyword makes the function return a Promise.

Sources
Official documentation ↗

TypeScript Compiler Diagnostics

Content generated with AI assistance and reviewed for accuracy. Found an error? hello@errcodes.dev

← All TypeScript errors