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/client
をimport
しても参照できますが、出力先のパスを変えている場合は次に示すようにエイリアスを設定した方が良いかと思います。
例えば、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
以上、ちょっとしたネタでした。