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

TypeScript中是否存在可空(null/undefined)基础类型的简写声明方式?

TypeScript 可空/未定义变量的简写方案

针对你提到的string | null | undefined或string | null这类类型声明,TypeScript本身没有内置的原生简写语法,但有两种实用的解决方案:

自定义类型别名(通用方案)

这是日常开发中最常用的方式,你可以提前定义通用的可空类型,后续重复使用:

// 同时允许 null 和 undefined
type Nullable<T> = T | null | undefined;
// 仅允许 null(适配你初始化赋值为 null 的场景)
type Nullish<T> = T | null;

之后就能用简洁的方式声明变量:

let s: Nullable<string>; // 等价于 string | null | undefined
let num: Nullish<number> = null; // 等价于 number | null

这种方式的优势是统一维护,后续如果需要调整可空规则,只修改类型别名即可,不用逐一修改所有变量声明。

场景化简写(仅限对象属性/函数参数)

  • 对象属性:使用?:语法,等价于类型 | undefined:
    interface User {
      nickname?: string; // 等价于 nickname: string | undefined
    }
    
  • 函数可选参数:参数名?: 类型的写法,等价于参数名: 类型 | undefined:
    function printMsg(msg?: string) {
      // msg 的类型为 string | undefined
    }
    

但要注意,这种简写仅适用于对象属性和函数参数,无法直接用于独立变量的声明。

关于显式声明的必要性

如果不使用自定义类型别名,就必须显式写出| null | undefined或| null——TypeScript没有原生的单符号简写(比如?string这类语法)来直接表示这类联合类型。

内容的提问来源于stack exchange,提问作者Stefanie Gauss

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:09:57