带有提取的数组主体使用哪种打字稿类型?

时间:2018-10-05 02:18:10

标签: typescript fetch

我正在使用访存来发布一些经过url编码的表单数据,如下所示:

private buy = async () => {
    const { nonce } = await this.state.instance.requestPaymentMethod();

    const formBody = [];
    formBody.push(`${encodeURIComponent("paymentMethodNonce")}=${encodeURIComponent(nonce)}`);

    // @ts-ignore
    const response = await fetch(`http://localhost:4000/checkout`, {
        method: "post",
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
        },
        body: formBody,
    });
}

在忽略时可以正常工作,但是在这种情况下应该使用哪种类型,以便可以删除忽略?

1 个答案:

答案 0 :(得分:0)

fetch API是DOM API的一部分,并且被定义为lib.dom.d.ts的一部分。
根据此定义,body类型定义为:

type BodyInit = Blob | BufferSource | FormData | URLSearchParams | ReadableStream | string;

因此,对于内容类型为application/x-www-form-urlencoded的请求,您可以将URLSearchParams用作body类型:

private buy = async () => {
  const { nonce } = await this.state.instance.requestPaymentMethod();

  const formBody = new URLSearchParams();
  formBody.append('paymentMethodNonce', nonce);

  const response = await fetch(`http://localhost:4000/checkout`, {
    method: "post",
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
    },
    body: formBody,
  });
}