createClientの戻り値の型定義
こちらの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
(もし実装するとなった場合、MicroCmsClient が createClient のパラメータの型として定義されているので、命名が難しいなと思っております。
可能ならパラメータの型は MicroCmsClientParameter みたいに変えられればいいなと思うのですが、後方互換性がなくなるので微妙だよなあと...。)
ご利用いただきありがとうございます!
createClientを実行した時の返り値の型ですが、以下で取得可能です!
type CreateClientReturn = ReturnType<typeof createClient>;
ただし、上記の型をパッケージから提供するのもありだと思うので、このIssueはfeature requestとして残させてもらいます👍
なるほど、現状でも戻り値の型がライブラリから取れるのですね。 ありがとうございます!