TypeScript细碎知识点:?, ??, !, !!
🐹 1. 一个问号(?)
在 TypeScript 中用于表示可选属性和可选参数,使得属性和参数可以选择性地存在。主打的就是两个字“随意”
🐡 可选属性: 在对象类型中,可以使用问号来标记某个属性是可选的。这意味着该属性可以存在,也可以不存在。
interface Person { name: string; age?: number; } //可以不实现age属性 const person1: Person = { name: "John" }; //可以实现age属性 const person2: Person = { name: "Jane", age: 25 };
age 属性被标记为可选,因此可以在对象中选择性地包含它。
🐡 可选参数: 在函数的参数列表中,可以使用问号来标记某个参数是可选的。这意味着在调用函数时,可以选择性地省略该参数。
function greet(name: string, age?: number) { console.log(`Hello, ${name}! You are ${age} years old.`); } greet("John"); // 输出:Hello, John! You are undefined years old. greet("Jane", 25); // 输出:Hello, Jane! You are 25 years old.
在上面的例子中,age 参数被标记为可选,因此可以选择性地在函数调用中省略它。
🐹 2. 两个问号(??)
两个问号(??)是一个空值合并运算符,用于检查一个值是否为null或undefined,并在其为null或undefined时提供一个默认值。
const value = undefined const value1 = null; const value2 = 42; /*表示当??的左侧为null和undefined时, 返回右侧的数*/ const result = value ?? "Default Value"; //结果:Default Value const result1 = value1 ?? "Default Value"; //结果:Default Value const result2 = value2 ?? "Default Value"; //结果:42
🐹 3. 一个感叹号(!)
在TypeScript里面有3个地方会出现感叹号操作符,他们分别是
🐡 一元运算符
! 就是将之后的结果取反
function isNumber (param: any): boolean { return typeof param === 'number' }
// 当 isNumber(input) 为 True 时返回 False; isNumber(input) 为 False 时返回True const a = !isNumber('我是字符串');
🐡 属性或参数中使用!表示表示强制解析(告诉typescript编译器,这里一定有值)
? 让类属性为可选属性,可以不传,!可以当这个属性不存在时返回undefined而不是报错
interface A { x?: number //该属性是可选,可以不传 } const demo = (parma: A) => { const y:number = parma.x! // !告诉编译器,这个属性虽然是可选类型,但是它一定有值,可以赋值给y return y } console.log(demo({})) // 没有传x, 输出: undefined console.log(demo({x: 3})) // 输出: 3
🐹 4. 两个感叹号(!!)
表示将把表达式 【强行转换】 为 bool
console.log(!!(0 + 0)) // 输出: false console.log(!!(3 * 3)) // 输出: true console.log(!!('aaaa')) // 输出: true console.log(!!('')) // 输出: false
浙公网安备 33010602011771号