[英]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
屬性的類型從Date
為string
。 但我需要復制對象的其余部分,即: 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.