typescript
、express
をインストール
npm init -y
npm install typescript
npx tsc --init
npm install express
app.ts
を作成
touch app.ts
app.ts
でexpress
をrequire
したところエラーが出た
const express = require('express')
TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
- TypeScriptは
node.js
の関数であるrequire
を理解していない -
require
を理解させるためにNode.js
の型定義ファイルが必要 - エラー内容に従って
@types/node
をインストール -
@types/node
はNode.jsの型定義ファイル - インストールすると、エラーが解消される
npm install -D @types/node
インポートしたexpress
で入力支援が行われない
-
app.
と入力しても、listen
などが入力支援で出てこない -
app
の型推論がany
になっておりexpress用の型定義ファイルが無いため -
express
用の型定義ファイルである@types/express
をインストールする
npm install -D @types/express
しかし、まだでない
- そもそも
require
にカーソルを合わせて見てみると、any
を返す関数として定義されている
TS80005: 'require' call may be converted to an import.
- TypeScriptはこの
require
関数が何をしているのか知らない状態 - TypeScriptで正しく機能させるためには、TypeScriptにあるモジュールシステムである
import
を使わないといけない -
require
をimport
に変更する
// const express = require('express')
import express from 'express' // これに変更
const app = express()
- 正しく入力支援が出るようになりました。