microcms-js-sdk icon indicating copy to clipboard operation
microcms-js-sdk copied to clipboard

createClientの戻り値の型定義

Open mkiken opened this issue 2 years ago • 2 comments

こちらのSDKを使わせていただいてTypeScriptで実装をしているのですが、createClient メソッド の戻り値の型定義がないので扱いづらく困っております。 取り急ぎ下記の MicroCmsClientInterface のように自前で定義しています。(自分がTypeScriptに精通していないので知らないだけかもしれませんが、SDKの定義をうまいこと流用したりできるのでしょうか...?)

type MicroCmsClientInterface = {
  get: <T = any>({
    endpoint,
    contentId,
    queries,
    customRequestInit,
  }: GetRequest) => Promise<T>
  getList: <T_1 = any>({
    endpoint,
    queries,
    customRequestInit,
  }: GetListRequest) => Promise<MicroCMSListResponse<T_1>>
  getListDetail: <T_2 = any>({
    endpoint,
    contentId,
    queries,
    customRequestInit,
  }: GetListDetailRequest) => Promise<T_2 & MicroCMSContentId & MicroCMSDate>
  getObject: <T_3 = any>({
    endpoint,
    queries,
    customRequestInit,
  }: GetObjectRequest) => Promise<T_3 & MicroCMSDate>
  create: <T_4 extends Record<string | number, any>>({
    endpoint,
    contentId,
    content,
    isDraft,
    customRequestInit,
  }: CreateRequest<T_4>) => Promise<WriteApiRequestResult>
  update: <T_5 extends Record<string | number, any>>({
    endpoint,
    contentId,
    content,
    customRequestInit,
  }: UpdateRequest<T_5>) => Promise<WriteApiRequestResult>
  delete: ({
    endpoint,
    contentId,
    customRequestInit,
  }: DeleteRequest) => Promise<void>
}

export abstract class CmsClient {
  private static _client: MicroCmsClientInterface
  ...
}

以下のissueのコメントにもあるように、createClient の型定義を導入するのはどうでしょうか? 方針がよさそうであれば自分の方でプルリクを出すことも可能です。 https://github.com/microcmsio/microcms-js-sdk/issues/4#issuecomment-860724102

(もし実装するとなった場合、MicroCmsClientcreateClient のパラメータの型として定義されているので、命名が難しいなと思っております。 可能ならパラメータの型は MicroCmsClientParameter みたいに変えられればいいなと思うのですが、後方互換性がなくなるので微妙だよなあと...。)

mkiken avatar Sep 05 '23 21:09 mkiken

ご利用いただきありがとうございます!

createClientを実行した時の返り値の型ですが、以下で取得可能です!

type CreateClientReturn = ReturnType<typeof createClient>;

ただし、上記の型をパッケージから提供するのもありだと思うので、このIssueはfeature requestとして残させてもらいます👍

dc7290 avatar Sep 07 '23 09:09 dc7290

なるほど、現状でも戻り値の型がライブラリから取れるのですね。 ありがとうございます!

mkiken avatar Sep 07 '23 16:09 mkiken