繁体   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