TypeScript
Pages Functions supports TypeScript. Author any files in your /functions
directory with a .ts
extension instead of a .js
extension to start using TypeScript.
You can add runtime types and Env types by running:
npx wrangler types --path='./functions/types.d.ts'
pnpm wrangler types --path='./functions/types.d.ts'
yarn wrangler types --path='./functions/types.d.ts'
Then configure the types by creating a functions/tsconfig.json
file:
{ "compilerOptions": { "target": "esnext", "module": "esnext", "lib": ["esnext"], "types": ["./types.d.ts"] }}
See the wrangler types
command docs for more details.
If you already have a tsconfig.json
at the root of your project, you may wish to explicitly exclude the /functions
directory to avoid conflicts. To exclude the /functions
directory:
{ "include": ["src/**/*"], "exclude": ["functions/**/*"], "compilerOptions": {}}
Pages Functions can be typed using the PagesFunction
type. This type accepts an Env
parameter. The Env
type should have been generated by wrangler types
and can be found at the top of types.d.ts
.
Alternatively, you can define the Env
type manually. For example:
interface Env { KV: KVNamespace;}
export const onRequest: PagesFunction<Env> = async (context) => { const value = await context.env.KV.get("example"); return new Response(value);};
If you are using nodejs_compat
, make sure you have installed @types/node
and updated your tsconfig.json
.
{ "compilerOptions": { "target": "esnext", "module": "esnext", "lib": ["esnext"], "types": ["./types.d.ts", "node"] }}
Was this helpful?
- Resources
- API
- New to Cloudflare?
- Products
- Sponsorships
- Open Source
- Support
- Help Center
- System Status
- Compliance
- GDPR
- Company
- cloudflare.com
- Our team
- Careers
- 2025 Cloudflare, Inc.
- Privacy Policy
- Terms of Use
- Report Security Issues
- Trademark