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

如何强制泛型函数参数类型为T | null?

约束泛型函数仅接受包含null的类型参数

要实现仅允许传入T | null类型(即包含null的联合类型)的泛型函数,可通过条件类型约束修改原函数定义:

修改后的函数代码

function foo<T>(val: null extends T ? T : never) {
  // 函数逻辑实现
}

原理说明

利用TypeScript的条件类型null extends T ? T : never做参数类型校验:

  • 当传入的参数类型T包含null(比如string | null、null、number | null | undefined),null extends T结果为true,参数类型保留为T,允许正常传入
  • 当传入的是纯非null类型(比如string、number),null extends T结果为false,参数类型变为never,触发编译错误

测试验证

不符合约束的情况(编译错误)

let fooNonNull: string = "foo"
foo(fooNonNull) // 编译报错:类型'string'不能赋值给类型'never'

符合约束的情况(正常编译)

let fooNull: string | null = "foo";
foo(fooNull) // 无编译错误,正常执行

内容的提问来源于stack exchange,提问作者Sebastian Barth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 20:05:03