日本語
NotionワークスペースをタイプセーフなヘッドレスCMSに変換
import { Client } from "notcms"; import { schema } from "./schema"; const nc = new Client({ schema }); // 完全に型付けされたレスポンス const [posts, error] = await nc.query.blog.list(); // posts: Array<{ // title: string, // content: string, // properties: { // published: boolean, // author: string // } // }>
// 自動生成されたスキーマ export const schema = { blog: { id: "your_database_id", properties: { title: "title", published: "checkbox", author: "rich_text" } } } satisfies Schema;
const [data, error, response] = await nc.query.blog.get(pageId); if (error) { console.error("取得に失敗しました:", error.message); return; } // データを安全に使用 console.log(data.title);
// ❌ 生のNotion API - 複雑でエラーが発生しやすい const response = await notion.databases.query({ database_id: 'abc123', filter: { property: 'Published', checkbox: { equals: true } } }); // TypeScriptサポートなし、手動の型アサーションが必要 const title = (response.results[0].properties.Title as any).title[0].plain_text; // ✅ NotCMS - シンプルでタイプセーフ const [posts, error] = await nc.query.blog.list(); // 完全なTypeScriptサポート、IDE自動補完が機能 posts.forEach(post => console.log(post.title));