isResult
检查一个值是否为 Result 元组
217 bytes
since v12.2.0
用法
检查一个值是否为 Result 元组。
不知道这是什么? 请阅读下方 Result 章节。
import * as _ from 'radashi'
_.isResult([undefined, 42]) // => true_.isResult([new Error(), undefined]) // => true
// 元组长度必须为 2。_.isResult([new Error()]) // => false_.isResult([undefined, true, undefined]) // => false
// 非元组值均为 false。_.isResult([]) // => false_.isResult({}) // => false_.isResult(null) // => false
// Result 元组不能同时包含值和错误。_.isResult([new Error(), true]) // => false另请参阅相关的 isResultOk 和 isResultErr 函数。
类型详解
Result
“Results”是包含 2 个元素的元组(一个错误和一个结果值)。
- 第一个元素始终是错误,如果操作成功则为
undefined。 - 第二个元素始终是结果值,除非发生了错误。
- 这些元组由
Result<TResult, TError>类型表示。 - 当未显式定义错误类型时(例如
Result<string>),默认使用Error作为错误类型。
Ok 和 Err
有两种结果类型:Ok<TResult> 和 Err<TError>。
Ok类型表示操作成功。它是[undefined, TResult]元组。Err类型表示操作失败。它是[TError, undefined]元组。
名称“Ok”和“Err”的灵感来源于 Rust 的 std::result 模块。
要检查是否为 Ok 结果,请这样做:
declare const value: unknown
if (isResult(value) && value[0] == null) { value // <-- 现在类型为 Ok<unknown> value[1] // <-- 这是结果值!}要检查是否为 Err 结果,请这样做:
declare const value: unknown
if (isResult(value) && value[0] != null) { value // <-- 现在类型为 Err<Error> value[0] // <-- 这是错误!}你也可以分别使用 isResultOk 和 isResultErr 函数来检查 Ok 和 Err 结果。