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

如何实现函数简化TypeScript对象类型校验并更新类型

实现TypeScript类型安全的hasProp函数,用于对象属性检查与类型窄化

你需要的是一个能替代重复检查、同时帮TypeScript做类型窄化的工具函数,直接看实现:

函数实现

function hasProp<T extends object, K extends string>(obj: T, prop: K): obj is T & Record<K, unknown> {
  return typeof obj === 'object' && obj !== null && prop in obj;
}

关键说明

  • 用类型谓词(obj is ...)告诉TypeScript:当函数返回true时,输入的对象一定包含指定属性
  • T extends object确保输入是对象类型(排除字符串、数字这类原始值)
  • Record<K, unknown>表示对象包含K这个属性,属性类型设为unknown是因为我们只确认存在性,不确定具体类型

使用示例

对应你的场景,这样调用即可:

const myObject = transition.options().custom; // custom 类型为 any

if (hasProp(myObject, 'isChanged')) {
    // 这里 myObject 会被TypeScript识别为包含 isChanged 属性的对象,类型安全
    if (typeof myObject.isChanged === 'boolean') {
        // 可以进一步窄化属性类型,比如确认是布尔值后再做逻辑
        // Do something
    }
}

这样就把重复的三次检查封装成了可复用的函数,同时解决了any类型带来的类型不安全问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:45:57