gleam-lang/gleam

Improve TS type narrowing

已关闭

#5,715 创建于 2026年5月13日

 (5 条评论) (1 个反应) (0 位负责人)Rust (960 个派生)batch import
help wanted

仓库指标

星标
 (21,417 个星标)
PR 合并指标
 (PR 指标待抓取)

描述

In the following issue, the example are made with a simple Option(a) in Gleam.

When using an Option(a) to TS, we know for sure that the expected type is Option$, so we can type functions signatures as (value: $option.Option$<EL>) => ..... When using the new API, "pattern matching" is defined as $option.Option$isSome(value)). The type narrowing works, but will refine value from Option$<EL> to Option$<unknown>, because isSome is defined as export function Option$isSome<EL>(value: any): value is Option$<unknown>;.

Thanks to TS and function overloading, we could do way better, and keep the generic type, while narrowing to the correct type. We could write an overload export function Option$isSome<EL>(value: Option$<EL>): value is Some<EL>. That way, it would keep the generic.

贡献者指南