Last updated: Feb 27, 2024
Reading timeยท3 min
To import a JavaScript file into a TypeScript file:
allowJs
to true
in your tsconfig.json
file.import { getEmployee } from './employee'
.import getEmployee from './employee'
.The first thing you should do is make sure you have set allowJs
to true
in
your tsconfig.json file.
{ "compilerOptions": { // ... other settings "allowJs": true } }
Here is the JavaScript file we will import into a TypeScript file.
// eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-nocheck export function getEmployee(id, name, salary) { return { id, name, salary, }; }
And here is how we import the JavaScript file into an index.ts
file.
import { getEmployee } from './employee'; type Employee = { id: number; name: string; salary: number; }; const emp = getEmployee(1, 'James', 100) as Employee; console.log(emp.id); // ๐๏ธ 1 console.log(emp.name); // ๐๏ธ "James" console.log(emp.salary); // ๐๏ธ 100
Make sure to correct the path to the employee.js
file if you have to.
The example above assumes that the employee.js
file and index.ts
are located
in the same directory.
If, for example, your employee.js
file was one directory up, you would import
it as import { getEmployee } from '../employee'
.
The example above uses a named import. If your JavaScript file uses a default export, remove the curly braces in the import statement.
// eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-nocheck // ๐๏ธ default export export default function getEmployee(id, name, salary) { return { id, name, salary, }; }
And here is how you would import the default export into your TypeScript file.
// ๐๏ธ default import import getEmployee from './employee'; type Employee = { id: number; name: string; salary: number; }; const emp = getEmployee(1, 'James', 100) as Employee; console.log(emp.id); // ๐๏ธ 1 console.log(emp.name); // ๐๏ธ "James" console.log(emp.salary); // ๐๏ธ 100
If this doesn't work either, try using the import * as employee
syntax.
import * as employee from './employee'; type Employee = { id: number; name: string; salary: number; }; const emp = employee.getEmployee(1, 'James', 100) as Employee; console.log(emp.id); // ๐๏ธ 1 console.log(emp.name); // ๐๏ธ "James" console.log(emp.salary); // ๐๏ธ 100
Make sure to specify the correct path to the employee.js
file.
rootDir
You should also make sure that the JavaScript file you are importing is located under your rootDir.
rootDir
setting in my tsconfig.json
is set to src
, which means that the JavaScript file I am importing has to be located under the src
directory.If your JavaScript file is not under your rootDir
, you would get an error:
"File is not under 'rootDir'. 'rootDir' is expected to contain all source
files.".
The allowJs setting allows JavaScript files to be imported inside your TypeScript files.
The setting basically allows JavaScript and TypeScript files to live in the same project.
The allowJs
option is set to false
by default.
There is also a checkJs
setting. When checkJs
is set to true
, errors are reported in JavaScript
files.
If you don't want to get TypeScript errors in your JavaScript files, set
checkJs
to false
in your tsconfig.json
file.
The checkJs
option is set to false
by default.
{ "compilerOptions": { // ... other options "allowJs": true, "checkJs": false } }
Now you won't get type-checking errors in your JavaScript files.
I've also written a tutorial on how to import a JSON file in TypeScript.
You can learn more about the related topics by checking out the following tutorials: