我在创建一个检查对象是否有效的函数时遇到了一个问题。
const isPeriodValid = (period: Period | null): boolean => {
return period && period.start && period.end;
}
export interface Period {
start: number,
end: number
}
字符串
My IDE says:TS2322:Type 'number|“null”不能赋值给类型“boolean”。 类型'null'不能赋值给类型'boolean'.并建议我返回:null| 0 |number
我做错了什么?
1条答案
按热度按时间pbgvytdp1#
好吧,根据你的
Period
类型声明和你的函数逻辑,你从你的函数返回一个数字或null,所以TypeScript对你声明你返回一个布尔值的事实提出了质疑。一个快速的解决方案是强制计算结果为布尔值:
字符串
一个更简洁的解决方案是创建一个类型 predicate :
型
这样做的另外一个好处是,如果你想在代码中进一步使用
period
变量,它会被Assert为Period
类型。