🔄 void 类型
void 表示没有类型,常用于函数没有返回值的情况。
// 函数没有返回值
function log(message: string): void {
console.log(message);
}
// 返回 void 的函数可以返回 undefined 或 null(取决于配置)
function returnNothing(): void {
return; // 或 return undefined
}
// 变量声明 void 没有实际意义
let unusable: void = undefined;
💡
void vs undefined
void 用于描述函数返回值类型,表示"无返回值";undefined 是一个具体的值。函数返回 void 时,实际返回的是 undefined。
🈳 null 和 undefined
// null 表示"空值"
let empty: null = null;
// undefined 表示"未定义"
let notDefined: undefined = undefined;
// 默认情况下,它们是所有类型的子类型
let num: number = null; // 非严格模式下 OK
let str: string = undefined; // 非严格模式下 OK
// 严格模式下(strictNullChecks: true)
let strictNum: number = null; // Error
let strictStr: string = undefined; // Error
// 需要显式包含 null/undefined
let maybeNum: number | null = null;
let maybeStr: string | undefined = undefined;
🔒 严格空值检查
// 开启 strictNullChecks 后
interface User {
name: string;
email: string | null; // email 可能为 null
}
function getEmail(user: User): string {
// 需要处理 null 的情况
if (user.email === null) {
return '未设置邮箱';
}
return user.email;
}
// 可选链操作符
function getEmailLength(user: User): number {
return user.email?.length ?? 0;
}
// 空值合并运算符
function getDisplayName(user: User): string {
return user.name ?? '匿名用户';
}
⚠️
推荐配置
建议在 tsconfig.json 中启用 strict: true 或至少启用 strictNullChecks: true,避免空值相关的运行时错误。