簡體   English   中英

如何在 Typescript 中為字符串和 boolean 值設置記錄

[英]How to set Record in Typescript for string and boolean value

全部。

我在 React 中有一個 Formik 字段,需要將字段的值設置為字符串或 boolean

const handleSubmit = async (values: Record<string, string>) => {
    const checkoutDetails = await getCheckout({ checkoutId: checkoutId });
    if (checkoutDetails.errors) {
        setSubmitError(true);
        return;
    }

    const email = checkoutDetails.data.checkoutById.customer?.email;
    const customer = await addCustomer({
        firstName: values.firstName,
        lastName: values.lastName,
        checkoutId: checkoutId as string,
        customerId: null,
        email: email,
        ochId: null,
        emailMarketingConsent: values.emailMarketing as unknown as boolean,
        smsMarketingConsent: values.smsMarketing as unknown as boolean,
    });

使用上面的代碼,我必須轉換最后兩個值,因為它們是 boolean 值,我嘗試了幾種方法,包括編寫自定義類型,但它似乎以一種或另一種方式出錯

不要誤會我的意思,它確實是這樣工作的,但我覺得有一種更好的方法,無需將 unknown 類型轉換為 boolean。

誰能告訴我如何設置記錄類型,這樣我就不需要投射它了?

謝謝!

Record<string, string| boolean> Record<string, string| boolean>可能是一種方法,但您仍然需要類型斷言。

或者你可以做一個交叉點:

type Foo  = Record<string, string> & {emailMarketing: boolean, smsMarketing: boolean}

declare const foo:Foo;
 
foo.firstName // string
foo.emailMarketing // boolean;
foo.smsMarketing // boolean;

操場

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM