Open4

Notion APIをTypeScriptで利用したい→諦めた

Gekitenius.YGekitenius.Y

Notion APIを利用したブログサイトを構築中。
APIから取得するデータに形をつけて良い感じにしたい。

Gekitenius.YGekitenius.Y

公式のSDKではExampleが用意されている。

https://github.com/makenotion/notion-sdk-js/blob/main/examples/database-email-update/index.ts
こちらはNotionのDBに変更が入ったときにメールを送るという処理の実装例、TypeScriptで記述されている。

本命のDBに対する操作についてはこちら。残念ながらTypeScriptで記述されたものはなく、JavaScriptでの実装例のみ。
https://github.com/makenotion/notion-sdk-js/blob/main/examples/intro-to-notion-api/intermediate/3-query-database.js

Gekitenius.YGekitenius.Y

NotionのDBが柔軟すぎるせいか型定義が上手くいかない。

こちらに記載の内容で躓いている。
https://zenn.dev/ayaextech_fill/scraps/39442e92a4f6e4

export const getDatabase = cache(async (): Promise<PageObjectResponse[]> =>  {
  const response: PageObjectResponse[] = await notionClient.databases
    .query({
      database_id: DATABASE_1,
    })
    .then((res) => {
      let items:PageObjectResponse[] = [];
      res.results.forEach((result) => {
        if ("properties" in result) {
          // PageObjectResponse型のみ追加する
          items.push(result as PageObjectResponse);
        } else {
          throw new Error('getDatabase: result is not PageObjectResponse type\n')
        }
      });
      return items;
    });
    return response;
});