倉庫指標
- 星標
- (21,417 顆星)
- PR 合併指標
- (平均合併 10天 19小時) (30 天內合併 69 個 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.