TypeScript 中 Optional Chaining 和 Nullish Coalescing
- 2021 年 5 月 25 日
- 筆記
Optional Chaining 解決的問題是重複且無意義的判空,之所以說無意義,是對業務來說它不是必需的,但不判空,程式直接就掛了,比如: let x = foo.bar.baz();
這裡的訪問鏈路上 使用 Optional Chaining 修改後: let x = foo?.bar.baz();
這裡 Optional Chaining 在這裡表示,如果 作用範圍需要注意的是,這裡只對 所以可以這樣來修正: let x = foo?.bar?.baz();
這樣可以保障 Opptoinal call對於方法也同樣適用。 async function makeRequest(url: string, log?: (msg: string) => void) {
log?.(`Request started at ${new Date().toISOString()}`);
// roughly equivalent to
// if (log != null) {
// log(`Request started at ${new Date().toISOString()}`);
// }
const result = (await fetch(url)).json();
log?.(`Request finished at at ${new Date().toISOString()}`);
return result;
}
Optional element access數組也是對象,只不是特殊的對象,通過數字索引作為屬性來訪問。所以 Optional Chaining 也可作用於數組元素的訪問,此時就體現了 /**
* Get the first element of the array if we have an array.
* Otherwise return undefined.
*/
function tryGetFirstElement<T>(arr?: T[]) {
return arr?.[0];
// equivalent to
// return (arr === null || arr === undefined) ?
// undefined :
// arr[0];
}
和
|
The text was updated successfully, but these errors were encountered: |