Open3

TypeScriptでクラスのメソッドの型を抽出する

mikana0918@InterfaceXmikana0918@InterfaceX

StripeのSessionResourceというチェックアウトするときに利用するクライアントの型があって、Classを利用していた。この中で、例えばCreateメソッドの型を抽出したい。

mikana0918@InterfaceXmikana0918@InterfaceX
import Stripe from 'stripe';

export interface IStripeCheckoutGateway {
  createSession: InstanceType<
    typeof Stripe.Checkout.SessionsResource
  >['create'];
}

class StripeCheckoutGateway implements IStripeCheckoutGateway {
  // TODO...
}

これでいけた。外部API仕様の型が公開されていて、Gatewayのような層を通じて外部APIを触る構成のときには積極的に使っていきたい。

ちなみに細かい所としては、Stripe側の型でcreateのメソッドが2つ定義されている。type inferenceを見る限りそれらもしっかりとれているよう。

(property) IStripeCheckoutGateway.createSession: {
    (params?: Stripe.Checkout.SessionCreateParams | undefined, options?: Stripe.RequestOptions | undefined): Promise<Stripe.Response<Stripe.Checkout.Session>>;
    (options?: Stripe.RequestOptions | undefined): Promise<...>;
}

よく取れてると思った方はいいねボタンおしてくださいw