Prismaで記述したモデルをTypeScriptで利用する流れ

Prismaで記述したモデルの型をTypeScriptで利用する流れについてメモっておきます。

今回は、次のバージョンで実行して確認しました。

  • prisma v3.15.1
  • @prisma/client v3.15.1

バージョンアップで仕様が変わった場合は読み替えるなりしてください。

モデル定義とPrisma Clientコードの生成

schema.prismaファイルに次のような記述があるとします。

schema.prisma
enum TaskStatus {
  Ready
  InProgress
  Done
}

model Task {
  id         Int     @id @default(autoincrement())
  label    String
  status TaskStatus
}

次のコマンドでPrisma Clientコードを生成します。(型定義ファイルもできる)

yarn prisma generate

すると、 node_modules/.prisma/client(デフォルトの場合)に生成されたファイルが出力されます。出力先を変えている場合は読み替えてください。

TypeScriptで型を利用

前述した通り、型定義ファイルはnode_modules/.prisma/clientにあります。

これは@prisma/clientimportしても参照できますが、出力先のパスを変えている場合は次に示すようにエイリアスを設定した方が良いかと思います。

例えば、out/.prisma/にしているケースを考えます。

tsconfig.jsonにてパスのエイリアスを設定しましょう。エイリアス名は任意のもので良いですが、直感的に分かりやすいように $prisma としておきましょう。

記述箇所を抜粋したものであり、その他のオプションはそのままです。

tsconfig.json
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "$prisma/*": [
        "./out/.prisma/*"
      ]
    },
  },
}

最後に、任意のTypeScriptのファイルで読み込んでみましょう。

import { Task, TaskStatus } from '$prisma/client'

IDE、エディタでエラーにならないか、または次のコマンドでエラーにならないことを確認してみましょう。

# 上記の記述箇所でエラーが出なければOK
yarn tsc --noEmit

以上、ちょっとしたネタでした。