TypeScriptAdded in v3.0.0
	Template Languages:
| Eleventy Short Name | File Extension | npm Package | 
|---|---|---|
| 11ty.ts | .11ty.ts | tsx | 
| 11ty.tsx | .11ty.tsx | tsx | 
- Related languages: JSX, JavaScript, Custom
- Front matter is not supported in TypeScript files. Use a dataexport instead.
INFO:
TypeScript requires ESM (when used with Eleventy, read more at Issue #3304). This means your project 
package.json must contain "type": "module" or your configuration file must use the .mjs file extension, e.g. eleventy.config.mjs. Read more about CommonJS versus ESM.Configuration
Added in v3.0.0Here we use tsx to process TypeScript files.
eleventy.config.js
import "tsx/esm";
import { renderToStaticMarkup } from "react-dom/server";
export default function (eleventyConfig) {
	// We can add support for JSX too, at the same time:
	eleventyConfig.addExtension(["11ty.jsx", "11ty.ts", "11ty.tsx"], {
		key: "11ty.js",
		compile: function () {
			return async function (data) {
				let content = await this.defaultRenderer(data);
				return renderToStaticMarkup(content);
			};
		},
	});
}Now run Eleventy and tell it to process 11ty.ts and 11ty.tsx files:
npx @11ty/eleventy --formats=11ty.ts,11ty.tsxAlternatively, you can add eleventyConfig.addTemplateFormats("11ty.ts,11ty.tsx") to your configuration file.
Using a TypeScript Configuration File
You can use tsx to process your configuration file too, just run it directly like so:
npx tsx ./node_modules/.bin/eleventy --config=eleventy.config.ts --formats=11ty.tsxCommunity Contributions
Using esbuild-register
If you’d like an approach that works with CommonJS and Eleventy 2.0, you can use esbuild-register with Eleventy (using the same conventions as 11ty.js templates). Check out this gist from @pspeter3 on GitHub or this GitHub comment from @danielrob.
Your config file might look like this:
Filename eleventy.config.js (CommonJS)
const { register } = require("esbuild-register/dist/node");
register();
module.exports = function(eleventyConfig) {
	// We can add support for JSX too, at the same time:
	eleventyConfig.addExtension(["11ty.jsx", "11ty.ts", "11ty.tsx"], {
		key: "11ty.js",
	});
};Now run Eleventy and tell it to process 11ty.ts and 11ty.tsx files:
npx @11ty/eleventy --formats=11ty.ts,11ty.tsx