簡體   English   中英

如何鍵入需要返回對象副本同時更改其屬性之一的類型的函數?

[英]How to type a function that needs to return a copy of an object while also changing the type of one of its properties?

我試圖用以下代碼完成什么:

游樂場鏈接

interface SOME_OBJECT_DATE   { otherProp: boolean,  myDate: Date }
interface SOME_OBJECT_STRING { otherProp: boolean,  myDate: string }

function convertDateToString(obj: SOME_OBJECT_DATE): SOME_OBJECT_STRING {
    const newObj = {...obj} as SOME_OBJECT_STRING;
    newObj.myDate = obj.myDate.toJSON();
    return newObj;
}

此函數的主要目標是將myDate屬性的類型從Datestring 但我需要復制對象的其余部分,即: otherProp屬性。

如何更新myDate ,復制obj參數並返回正確的類型?

在此處輸入圖片說明

這是我得到的錯誤:

在此處輸入圖片說明

注意:在我的真實場景中,我有一些其他重載(即:我將使用擴展“基本” interface { myDate: Date }多種類型來調用它,因此我制作了一個我將稱之為重載的列表with,但我需要鍵入實現,這應該類似於上面的示例。

您可以輕松構建所需類型的對象,而無需錯誤類型的幫助程序。

如果您知道將更正類型以匹配其廣告接口,則可以使用錯誤類型的輔助對象並安撫編譯器是一種可以使用的技術,但在您發布的示例中,無需訴諸這些技巧。

function convertDateToString(obj: SOME_OBJECT_DATE): SOME_OBJECT_STRING {
  return {
    ...obj,
   myDate: obj.myDate.toJSON()
  };
}

游樂場鏈接

暫無
暫無

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

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