TypeScript で書く

next@8.1.1より@zeit/next-typescriptを使わずにいけるようになりました。Next プロジェクトルートにtsconfig.jsonを起き以下を設定します。

{
  "allowJs": true,
  "skipLibCheck": true,
  "forceConsistentCasingInFileNames": true,
  "noEmit": true,
  "resolveJsonModule": true,
  "isolatedModules": true,
  "jsx": "preserve"
}

これらは Next 側で強制的に上書きされてしまうので上記のまま使うようにします。

あとはそのままページを.tsxで書いていくだけです。

いくつかの記法が使えない

以下の記法を使うとエラーになります。(babelが対応してない?)

  • const enum
  • namespace

注意

declare module '<package-name>' とそれを参照するtypesRoottsconfig.jsonに設定してしまうと、「そんなモジュールない」というエラーが起きてしまうようです。