Javascript 带有if语句的TypeScript DeepMap联合类型

Javascript 带有if语句的TypeScript DeepMap联合类型,javascript,typescript,if-statement,union-types,Javascript,Typescript,If Statement,Union Types,我正在尝试创建一个具有可选字段结构的联合类型。我创建了以下类型: 导出类型StartEndType={ 开始日期:字符串; 结束日期:字符串; }; 出口类型PayrollContract=StartEndType&{ 类型:“工资单上”; 年休假:次数; }; 出口类型合同=StartEndType&{ 类型:“自由职业者”; 小时费率:个数; }; 出口型合同=工资合同|自由合同; 在我的组件中,它看起来像: {contractType==='ON_PAYROLL'( ):contract

我正在尝试创建一个具有可选字段结构的联合类型。我创建了以下类型:

导出类型StartEndType={
开始日期:字符串;
结束日期:字符串;
};
出口类型PayrollContract=StartEndType&{
类型:“工资单上”;
年休假:次数;
};
出口类型合同=StartEndType&{
类型:“自由职业者”;
小时费率:个数;
};
出口型合同=工资合同|自由合同;
在我的组件中,它看起来像:

{contractType==='ON_PAYROLL'(
):contractType===‘自由职业者’&&(
)}
当我悬停在合同上时,它知道这是工资单上的
自由职业者中的一个。尽管很不幸,我的组件中出现了一个DeepMap错误

开箱即用的TypeScript不支持这一点吗

类型“DeepMap | DeepMap”上不存在属性“yearly_holidays”。
类型“DeepMap”上不存在属性“Yearal_holidays”。
我怎样才能解决这个问题?
提前谢谢。

您能提供
编号
组件的代码吗?看起来是关于如何按名称呈现数字的问题,我能够在TS操场中编译并使用上面的TS代码

const renderPayField = (contract: Contract) => {
  if (contract.type === 'ON_PAYROLL') {
     return <Number name="yearly_holidays" />;
  }
  if (contract.type === 'FREELANCE') {
     return <Number name="hourly_rate" />
  }
  return null;
};