Typescript で Javascript を使用する方法

はじめに

Web 開発で Typescript を導入する際に、コストを抑えるために Javascript を併用したい場合があります。

今日は Typescript で Javascript のインポートやコンパイルを行う方法をご紹介します。

確認に使用したのは Typescript 3.9.74.1.2 です。

目次
  1. 設定方法
  2. checkJs オプション

1. 設定方法

TSConfig (tsconfig.json) をお使いの場合は compilerOptions"allowJs" : true を追加してください。

tsconfig.json
"compilerOptions": {
    // ↓ 追加
    "allowJs": true,
    ...
}

gulp.js (gulp-typescript) で TSConfig 不使用の場合は、下記のように追加すれば OK です。

gulpfile.js
const { dest, src, task } = require('gulp');
const ts = require('gulp-typescript');

task('default', () => {
  return src([
      'src/**/*.js', // ← .js をコンパイルする場合は追加
      'src/**/*.ts'
    ])
    .pipe(ts({
      allowJs: true, // ← 追加
    }))
    .pipe(dest('dist'));
});

2. checkJs オプション

Javascript 使用時のオプションとして checkJs があります。

これを allowJs と併せて true にすると Javascript でも型チェックをしてくれます。

tsconfig.json
"compilerOptions": {
    "allowJs": true,
    "checkJs": true, // ← 追加
    ...
}

例えば下記のように Math.round() の引数に文字列を指定した場合、checkJs を true にするとエラーとなります。
(false にするとエラーは出ません)

src/sample.js
var num = Math.round('1.23');
console.log(num);
# checkJs が true だとエラーとなります
src/sample.js:1:22 - error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.

1 var num = Math.round('1.23');
                       ~~~~~~

checkJs を有効化すると既存コードでエラーが出て動かなくなる場合があるので、状況に応じて使用するのが良いかなと思います。

一時的に有効化して可能な範囲で修正し、また無効に戻す、という使い方もできますね。