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

TypeScript函数返回类型中‘obj is Date’是什么意思?

解释TypeScript中的obj is Date类型谓词

这段代码里的obj is Date是TypeScript的类型谓词(Type Predicate),核心作用是帮编译器做类型收窄,具体来说:

  • 当is_date函数返回true时,TypeScript编译器会自动把参数obj的类型从any收窄为Date类型。
  • 如果没有这个类型谓词,哪怕函数逻辑能正确判断obj是Date,编译器也只会把函数返回值当成普通boolean,不会自动更新obj的类型——这意味着你在后续代码里调用obj.getFullYear()这类Date方法时,编译器会报错,因为它不确定any类型的obj有没有这个方法。

举个实际使用的例子:

function handleInput(input: any) {
  if (is_date(input)) {
    // 这里编译器明确知道input是Date,能安全调用Date的API
    console.log('年份:', input.getFullYear());
  } else {
    // 这里input还是any类型,需要额外处理
    console.log('输入不是日期对象');
  }
}

另外补充一句:这个函数用Object.prototype.toString.call(obj)判断日期,比obj instanceof Date更可靠——比如跨iframe创建的Date实例,instanceof会因为原型链不同返回false,但toString的方式依然能正确识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:57:12