如何定义仅包含单个NonNullable元素的Array的正确类型?
实现方案
在TypeScript中可以通过定长元组+非空类型约束实现需求,具体代码如下:
泛型版本(可指定元素类型)
// 类型定义 type SingleNonNullableArray<T> = [NonNullable<T>]
校验效果
const test1: SingleNonNullableArray<number> = [] // 报错:数组长度不符合要求 const test2: SingleNonNullableArray<number> = [null] // 报错:元素不能为null const test3: SingleNonNullableArray<number> = [undefined] // 报错:元素不能为undefined const test4: SingleNonNullableArray<number> = [5] // 校验通过 const test5: SingleNonNullableArray<number> = [1, 2] // 报错:数组长度不符合要求
通用版本(无需提前指定元素类型)
如果不需要限制元素类型,只需要满足「单个非空元素」的规则,可以用以下定义:
type SingleNonNullableArray = [NonNullable<unknown>]
校验效果
const test6: SingleNonNullableArray = ['字符串'] // 通过 const test7: SingleNonNullableArray = [false] // 通过 const test8: SingleNonNullableArray = [{ key: 'value' }] // 通过 const test9: SingleNonNullableArray = [null] // 报错
内容的提问来源于stack exchange,提问作者Functor
相关产品推荐
相关产品推荐

