- 函数参数
- 使用
strictNullChecks
:
- 例如,定义一个函数
printLength
,它接受一个字符串参数并打印其长度:
function printLength(str: string) {
console.log(str.length);
}
let maybeStr: string | null = null;
// 下面这行代码会报错,因为strictNullChecks下,null不能赋值给string类型参数
printLength(maybeStr);
function printLength(str: string) {
console.log(str.length);
}
let maybeStr: string | null = null;
// 不会报错,在非strictNullChecks下,null可以赋值给string类型参数,运行时可能会出现空指针异常
printLength(maybeStr);
- 变量赋值
let num: number;
// 下面这行代码会报错,因为strictNullChecks下,不能将null赋值给number类型变量
num = null;
let num: number;
// 不会报错,在非strictNullChecks下,可以将null赋值给number类型变量,运行时可能会出问题
num = null;
- 对象属性访问
interface User {
name: string;
}
let user: User | null = null;
// 下面这行代码会报错,因为strictNullChecks下,可能为null的user不能直接访问name属性
console.log(user.name);
interface User {
name: string;
}
let user: User | null = null;
// 不会报错,在非strictNullChecks下,可以直接访问可能为null的user的name属性,运行时可能会因null而报错
console.log(user.name);