我刚刚参加在线评估,遇到一个错误,指出
'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)
这是一种方法:
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))
}