You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Clarity Design自定义日期过滤器isActive状态判定异常如何解决

报错原因

你定义的value与value2类型为Timestamp | string,TypeScript不允许Timestamp类型直接和空字符串''做全等判断,因此直接写this.value !== ''会触发类型不兼容错误。
同时原isActive逻辑仅排除了null值,而你初始化、重置过滤器时都是将值设为空字符串'',空字符串不等于null,因此方法会返回true,误判过滤器为激活状态。

修复方案

方案1(简洁通用)

直接利用布尔值转换规则判断即可,不会触发类型错误:

isActive(): boolean {
  return !!this.value && !!this.value2;
}

逻辑说明:空字符串''转换为布尔值为false,合法的Timestamp实例、非空日期字符串转换为布尔值为true,只有两个日期都有有效值时才会判定过滤器为激活状态。

方案2(严格校验)

如果需要额外排除字符串全空格的异常情况,可以加类型收窄逻辑:

isActive(): boolean {
  const valueValid = typeof this.value === 'string' ? this.value.trim() !== '' : !!this.value;
  const value2Valid = typeof this.value2 === 'string' ? this.value2.trim() !== '' : !!this.value2;
  return valueValid && value2Valid;
}

如果你的业务允许只填其中一个日期作为范围边界,将返回值中的&&改为||即可。

内容的提问来源于stack exchange,提问作者Heidi E

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:00:03