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: |
TypeScript 中 Optional Chaining 和 Nullish Coalescing
相關文章
- 精讀《Optional chaining》AI
- 談談 JavaScript 中的空值合併操作符 Nullish coalescing operatorJavaScriptNull
- vite 支援optional Chaining(可選鏈判斷運算子 ?.)和 nullishCoalescingOperatorViteAINullGo
- 為什麼我喜歡JavaScript的Optional ChainingJavaScriptAI
- Swift中 Nil Coalescing 運算子的使用技巧Swift
- JavaScript 和 TypeScript 中的 classJavaScriptTypeScript
- 【區分】Typescript 中 interface 和 typeTypeScript
- Maven中optional和scope元素的使用,你弄明白了?Maven
- optional
- 京東雲開發者|深入JDK中的OptionalJDK
- Maven中optional標籤詳解(轉)Maven
- SCSS !optionalCSS
- TypeScript中的介面TypeScript
- JavaScript 裡的 Promise ChainingJavaScriptPromiseAI
- Row Chaining and MigratingAI
- TypeScript 中令人迷惑的物件型別:Object、{} 和 objectTypeScript物件型別Object
- Row Migration and Row Chaining(行遷移和行連結)AI
- TypeScript中的範型TypeScript
- TypeScript中,interface和type使用上有什麼區別?TypeScript
- R language notes | pipes: chainingAI
- PCTFREE, PCTUSED, and Row Chaining(七)AI
- Row Chaining and Migrating(六)AI
- 對比Javascript和TypeScriptJavaScriptTypeScript
- Java 8 之 OptionalJava
- Typescript 中的 interface 和 type 到底有什麼區別TypeScript
- 【轉載】行遷移和行連結(row chaining or row migration)AI
- TypeScript Null和Undefined 型別TypeScriptNullUndefined型別
- CSS :optional 選擇器CSS
- Java Optional使用指南Java
- Java8 Optional類Java
- jQuery Validate optional()方法jQuery
- Java基礎系列-OptionalJava
- java8-Optional APIJavaAPI
- Oracle11g維護分割槽(二)——Coalescing PartitionsOracle
- 14-2 鏈地址法 Seperate ChainingAI
- 6.2、串連ViewResolver(Chaining ViewResolvers)ViewAI
- Chaining If Else Statements 巨坑的題目AI
- TypeScript中的函式詳解TypeScript函式