Typescript中?? ?: ?. 都代表什么作用


?:

?:是指可選參數,可以理解為參數自動加上undefined

function echo(x: number, y?: number) { // 可選參數
    return x + (y || 0);
}
getval(1); // 1
getval(1, null); // error, 'null' is not assignable to 'number | undefined'
interface IProListForm {
  enterpriseId: string | number;
  pageNum: number;
  pageSize: number;
  keyword?: string; // 可選屬性
}

??

?? 和 || 的意思有點相似,但是又有點區別,??相較||比較嚴謹, 當值等於0的時候||就把他給排除了,但是?? 不會.

console.log(null || 5)   //5
console.log(null ?? 5)     //5

console.log(undefined || 5)      //5
console.log(undefined ?? 5)      //5

console.log(0 || 5)       //5
console.log(0 ?? 5) 

?.

data入參可能為null,undefined,通常我們的寫法是直接上if判斷啥的,然后再取data中的屬性,但是有了問號點(?.)寫法就簡單很多了,看下面例子:
1.typescript寫法:

//1.data可能為null,undefined , row也可能為null,undefined
//2.假設data完整結構 {row:{name:'aaa'}}
function getData(data: any){
    let name = data?.row?.name
}

2.普通寫法

//1.data可能為null,undefined , row也可能為null,undefined
//2.假設data完整結構 {row:{name:'aaa'}}
function getData(data: any){
    let name;
    if (data && data.row) {
        name = data.row.name
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM