Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

createClientの戻り値の型定義 #64

Open
mkiken opened this issue Sep 5, 2023 · 2 comments
Open

createClientの戻り値の型定義 #64

mkiken opened this issue Sep 5, 2023 · 2 comments
Labels
enhancement New feature or request

Comments

@mkiken
Copy link

mkiken commented Sep 5, 2023

こちらの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 の型定義を導入するのはどうでしょうか?
方針がよさそうであれば自分の方でプルリクを出すことも可能です。
#4 (comment)

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

@dc7290
Copy link
Member

dc7290 commented Sep 7, 2023

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

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

type CreateClientReturn = ReturnType<typeof createClient>;

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

@dc7290 dc7290 added the enhancement New feature or request label Sep 7, 2023
@mkiken
Copy link
Author

mkiken commented Sep 7, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants