[英]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.