如何处理可以是特定类型或 null 的参数

问题描述 投票:0回答:1

我刚刚参加在线评估,遇到一个错误,指出

'Argument of type 'Date| null' is not assignable to parameter of type 'Date'

这是我使用这个功能的时候:

function followingDay(date: Date): Date {
  return new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1)
}

我试图将 var3 从这种类型的输入传递给函数:

interface User {
  var1: number;
  var2: Date;
  var3: Date | null;
}

当我这样做时,我已经将函数调用放在 if 语句中,以确保

User.var3!= null

如何避免出现此错误?我环顾四周,找不到解决方案。这是我发现的唯一看起来很接近但不起作用的东西。总的来说,我试图获取该 var3 的毫秒时间(如果它存在于推算用户中)

var day = (user.var3!= null ? followingDay(user.var3).getTime() : null)
typescript
1个回答
0
投票

这是一种方法:

interface User1 {
  var1: number;
  var2: Date;
  var3: Date;


interface User2 {   
  var1: number;   
  var2: Date;   
  var3: null; 
}

type User = User1 | User2

function isUser1(user: User): User is User1 { return !!user.var3 }

if (isUser1(user)) { 
  // user.var3 is type Date here
  console.log(followingDate(user.var3)) 
}
© www.soinside.com 2019 - 2024. All rights reserved.