首页 > 解决方案 > 如何用打字稿的唯一区别来描述对象?

问题描述

我从服务器端收到一个相当大的对象,比如说

{
 id:'asd123',
 created: 1591605861388,
 // hundred of fields more...  
}

我的模型类型实际上是相同的,除了“创建” - 这是日期。

type Model = {
 id: string,
 created: Date,
 ...
}

我需要创建创建模型类型模型的函数

function x(raw:???):Model{ // intentionally simplified
 return { 
    ...raw,
    created: new Date(raw.created) 
  }
} 

我必须写什么而不是问号?我如何在打字稿中定义它?

标签: typescriptrest

解决方案


您可以使用省略

操场

type Model = {
 id: string,
 created: Date,
}

type Model2 = Omit<Model, 'created'> & {
    created: string;
}

const test: Model2 = {
    created: '2020-08-12',
    id: '123'
}

推荐阅读