TypeScript
TypeScript adds static types to JavaScript, helping to prevent errors and improve code quality.
Extension.js offers built-in support for TypeScript, making it easy to integrate TypeScript into your browser extension projects.
Templates for TypeScript Extensions
Extension.js provides two TypeScript templates to get started with:
- New TypeScript Template: For creating a new tab page extension using TypeScript.
- Content TypeScript Template: For creating a content script-based extension using TypeScript.
New TypeScript Template
The new TypeScript template is ideal for creating browser extensions that need a new tab page. This template includes everything you need to start building an extension with TypeScript right out of the box.
Try it yourself
npx extension@latest create my-extension --template=new-typescript
Content TypeScript Template
The content TypeScript template is designed for extensions that need content scripts. This template enables you to inject TypeScript-based scripts directly into web pages.
Try it yourself
npx extension@latest create my-extension --template=content-typescript
Using TypeScript with an Existing Extension
If you want to add TypeScript support to an existing extension, follow these steps.
Installation
- Install TypeScript as a development dependency:
npm install -D typescript
- Initialize the TypeScript config file
tsconfig.json
:
Configuration
Automatic TypeScript Support
If your extension includes TypeScript but lacks a tsconfig.json
, Extension.js will automatically generate one with these default settings:
{
compilerOptions: {
allowJs: true,
allowSyntheticDefaultImports: true,
esModuleInterop: true,
forceConsistentCasingInFileNames: true,
isolatedModules: true,
jsx: "react-jsx",
lib: ["dom", "dom.iterable", "esnext"],
moduleResolution: "node",
module: "esnext",
noEmit: true,
resolveJsonModule: true,
strict: true,
target: "esnext",
verbatimModuleSyntax: true,
useDefineForClassFields: true,
skipLibCheck: true,
},
include: ["./"],
exclude: ["node_modules", "dist"],
}
Automatic Types
If your extension uses TypeScript, Extension.js will automatically install the necessary types for common libraries like chrome
, webextension-polyfill
, and node
in a extension-env.d.ts
file, which is auto-generated in the project root directory.
// Required Extension.js types for TypeScript projects.
// This file is auto-generated and should not be excluded.
// If you need additional types, consider creating a new *.d.ts file and
// referencing it in the "include" array of your tsconfig.json file.
// See https://www.typescriptlang.org/tsconfig#include for more information.
/// <reference types="extension/dist/types/index.d.ts" />
// Polyfill types for browser.* APIs.
/// <reference types="extension/dist/types/polyfill.d.ts" />
Next Steps