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

TypeScript中是否支持接口的可选链?类型安全获取示例疑问

TypeScript中接口的可选链类型获取支持情况

TypeScript从3.7版本开始,支持在类型上下文中使用可选链操作符(?.),所以你示例中的写法是完全有效的,可以安全获取可选值的类型。

看你的代码示例:

interface A {
  open?: () => void;
}

function Pro(b?: A) {
  type C = typeof b?.open; // 类型为 (() => void) | undefined
}

这里type C的最终类型是(() => void) | undefined,刚好覆盖了b可能为undefined、或者b存在但open未定义的两种情况,完全满足你安全获取类型的需求。

如果需要排除undefined,只获取open的实际函数类型,可以结合TypeScript内置的NonNullable工具类型:

type D = NonNullable<typeof b?.open>; // 类型为 () => void

内容的提问来源于stack exchange,提问作者Islam Y-

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:42:34