TypeScriptコンパイラー TSCのインストール
https://code.visualstudio.com/docs/languages/typescript#_installing-the-typescript-compiler
グローバルインストール
npm install -g typescript
プロジェクトごとのインストール
npm install --save-dev typescript
確認
tsc --version
プロジェクトディレクトリを作成
https://code.visualstudio.com/docs/languages/typescript#_hello-world
mkdir HelloWorld cd HelloWorld code .
.tsのソースを用意して、コンパイル&実行(tscコマンド)
- テストソースを用意
tscコマンドで.tsを.jsにトランスパイル (
helloworld.js
が生成される)tsc helloworld.ts
- コンパイルがソース -> バイナリに対して、トランスパイルはA言語 -> B言語への変換を指すらしい
実行 ※ただのJS実行
node helloworld.js
Hover information
https://code.visualstudio.com/docs/languages/typescript#_hover-information
⌘K⌘I
でも出せる
Signature help
https://code.visualstudio.com/docs/languages/typescript#_signature-help
⇧⌘Space
でも出せる
Errors and warnings
https://code.visualstudio.com/docs/languages/typescript#_errors-and-warnings
⇧⌘M
でサマリー出せるF8
でインラインで詳細出せる
Formatting
- VSCodeにはTypeScriptのフォーマッターが組み込まれている
typescript.format.enable
でフォーマッターの有効・無効を切替える (defaultでtrue)- フォーマットの細かい設定は
typescript.format.*
- 設定値については↓で確認
- フォーマットの細かい設定は
VSCode設定デフォルト値一覧
https://code.visualstudio.com/docs/getstarted/settings#_default-settings
Refactoring
処理を抽出
- 関数にしたい部分をハイライト
- 電球マークをクリック or
⌘.
- Extract function and Extract constant
処理をループブロックで囲む
- 関数にしたい部分をハイライト
- 電球マークをクリック or
⌘.
- ブロックの挿入から選択
リネーム
F2
Linters
https://code.visualstudio.com/docs/languages/typescript#_linters
- ESLintを設定
- typescript-eslint
ESLint
以前はTSLintが推奨されていたが、TSLintはdeprecatedになって、現在はESLintを使ったほうがいいとのこと Migrate from TSLint to ESLint
コマンドでインストールと設定ファイルを作成
eslint.config.js
がプロジェクトルートに生成される (最近設定ファイル名が変わったみたい)
npm init @eslint/config
package.jsonを編集
- このままでESLintを実行すると以下のエラーが出た
shell SyntaxError: Cannot use import statement outside a module
- メッセージに出ている通り、
"type": "module"
を設定する(node:46256) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
- このままでESLintを実行すると以下のエラーが出た
{
"name": "ts-practice",
"version": "1.0.0",
"description": "",
"type": "module",
...
}
- 実行
shell npx eslint .
VSCodeのESLint拡張
- ESLintの拡張をインストール
- 最近ESLintの設定ファイル名が
eslint.config.js
になったせいで、公式リリース版では動かなった。プレリリース版をインストールしたら正常に動作した - 正常に動作していればソース上で指摘される。「問題」からも確認可能