1 【?】 属性 或 参数 中使用 ? 表示该属性或参数为【可选项】
他会先判断 name 属性是存在,存在就去访问他的值,不存在就返回undefined
const user = null;
console.log(user.name) // 以前会报错
//现在,他会先判断 name 属性是存在,存在就去访问他的值,不存在就返回undefined
console.log(user?.name)
2 【!】属性或参数中使用!表示表示强制解析(告诉typescript编译器,这里一定有值)
?让类属性为可选属性,可以不传,!可以当这个属性不存在时返回undefined而不是报错
interface IDemo {x?: number //该属性是可选,可以不传
}
const demo = (parma: IDemo) => {const y:number = parma.x! // !可以将 当这个x属性为空将返回undefined而不是报错return y
}
console.log(demo({})) // 没有传x, 输出: undefined
console.log(demo({x: 3})) // 输出: 3
3 【||】 或运算符,属性不在就返回右边值,在就返回它自己的值
// 如果为undefined,返回y=1,如果不为undefined,则返回parma.x的值
const y:number = parma.x || 1;
console.log(y); // 输出: 1
const z:number = parma2.x || 1;
console.log(z); // 输出: 3
3 【!!】 表示将把表达式 【强行转换】 为 bool
0为false,非零为true
console.log(!!(0 + 0)) // 输出: false
console.log(!!(3 * 3)) // 输出: true
console.log(!!('aaaa')) // 输出: true
console.log(!!('')) // 输出: false
4 【??】 ??表示只有当左侧为null和undefined时, 才会返回右侧的数
0为false,非零为true
const foo = null ?? 'default string';
console.log(foo); // 输出: "default string"
const foo = undefined ?? 'default string';
console.log(foo); // 输出: "default string"const baz = 0 ?? 42;
console.log(baz); // 输出: 0
下面是?、??、!、!!的基本介绍:
属性或参数中使用?表示该属性或参数为可选项
??表示只有当左侧为null和undefined时, 才会返回右侧的数
属性或参数中使用!表示表示强制解析(告诉typescript编译器,这里一定有值)
变量前使用!表示取反, 变量后使用!表示类型推断排除null、undefined从而使null 和undefined类型可以赋值给其他类型并通过编译
!!表示将把表达式强行转换为逻辑值.