?:
?:是指可選參數,可以理解為參數自動加上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
}
}