问题描述
我要通过以下代码完成的工作:
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
参数并返回正确的类型?
这是我得到的错误:
注意:在我的实际情况中,我还有其他一些重载(即:我将使用扩展“ base” interface { myDate: Date }
的多种类型来调用它,因此我列出了一系列重载调用它,但是我需要键入实现,它应该类似于上面的示例。
解决方法
您可以轻松构造所需类型的对象,而无需使用错误类型的帮助程序。
如果您知道将更正类型以匹配其广告接口,则可以使用一种使用错误类型的帮助器对象并使编译器满意的技术,但是在您发布的示例中,无需诉诸于此类。技巧。
function convertDateToString(obj: SOME_OBJECT_DATE): SOME_OBJECT_STRING {
return {
...obj,myDate: obj.myDate.toJSON()
};
}