Slide 1

Slide 1 text

型付きで行うVSCode拡張機能開発 VS Code Meetup #31 @mazrean

Slide 2

Slide 2 text

mazrean 2 ◼ 東工大 修士2年 ⚫4時間後には𝑺𝒄𝒊𝒆𝒏𝒄𝒆 𝑻𝒐𝒌𝒚𝒐 ⚫ソフトウェア工学 ◼ デジタル創作同好会traP ⚫Goでバックエンドの開発 ◼ 趣味でVSCode拡張機能製作中 今日はこれの話 @mazrean22 / @mazrean

Slide 3

Slide 3 text

拡張機能開発でのTypeScriptの利用 3 ◼ 拡張機能開発では簡単にTypeScriptを使用できる ⚫コード生成ツール[1]にTypeScriptを利用するオプション ◼ VSCode APIにもしっかり型が付く! [1]: https://www.npmjs.com/package/generator-code

Slide 4

Slide 4 text

package.jsonに記述する設定 4 ◼ package.jsonへ記述する設定が存在 ⚫コマンド ⚫設定項目 コマンド 設定項目

Slide 5

Slide 5 text

package.json内の設定とTypeScript 5 ◼ 設定なしでVSCode APIを利用すると正常に動作しない! ◼ package.jsonはVSCode APIの型定義に反映されない → package.jsonを反映して型をつけたい! 例) コマンドのハンドラー設定 コマンド名: string型 → 実行までエラーなし

Slide 6

Slide 6 text

手順 6 1. package.jsonのTypeScriptへの変換 2. 型の作成 3. ラッパー関数作成 サンプル: https://github.com/mazrean/typed-hello-world

Slide 7

Slide 7 text

1. package.jsonのTypeScriptへの変換 7 ◼ jsonはそのままでは型定義に利用できない ⚫型定義にはreadonlyなオブジェクトのみ利用可能 ⚫現状、jsonはimport時にreadonlyにならない…[2] ◼ TypeScriptファイルに転記 [2]: https://github.com/microsoft/TypeScript/issues/32063 readonly化

Slide 8

Slide 8 text

1. package.jsonのTypeScriptへの変換 8 毎回転記するのは大変 → スクリプトを用意すると楽

Slide 9

Slide 9 text

2.型の作成 9 ◼ 書き出したTypeScriptを基に型を作成する ◼ 型が複雑になるものもあるが頑張る ⚫LLMの力を借りると楽になる

Slide 10

Slide 10 text

3.ラッパー関数作成 10 ◼ 型を設定したVSCode APIのラッパー関数を作る

Slide 11

Slide 11 text

デモ 11 誤ったコマンドにハンドラーを設定しようとするとエラー → 設定ミス・typoに気づきやすい!

Slide 12

Slide 12 text

まとめ 12 ◼ package.jsonに記述する設定項目が存在 ⚫設定を忘れると正常に動作しない ◼ VSCode APIの型定義にはpackage.jsonが反映されない ◼ 型付きのラッパー関数を作るとミスに気付ける!