https://ithelp.ithome.com.tw/users/20128534/ironman/4377
https://ithelp.ithome.com.tw/articles/10264271
https://ithelp.ithome.com.tw/m/users/20103315/ironman/4764
function *g1(){
let products = ["Apple", "Banana", "Orange"]
for(var i in products){
yield products[i]
}
}
for(product of g1()){
console.log(product);
}
/* Output:
Apple
Banana
Orange
*/
注意到函式名稱前加了個星號(*
)了嗎?然後yield
配合上當下產生的產品。That's right! 就是這麼簡單。
var obj = g1();
console.log(obj); // => Object [Generator] {}
console.dir(obj.next()); // => { value: 'Apple', done: false }
console.dir(obj.next()); // => { value: 'Banana', done: false }
console.dir(obj.next()); // => { value: 'Orange', done: false }
console.dir(obj.next()); // => { value: undefined, done: true }
console.dir(obj.next()); // => { value: undefined, done: true }
生成器物件有next()
方法可以取的下一件物品。得到的值會是一個有value
和done
欄位。value
就是預取得的物件,done
在檢查是不是到盡頭沒材料了。
減少 Bug 並使得維護更加容易,比如:
- 打錯字(Typo)或寫錯變數、物件性質或方法的名稱。例如:
String.prototype.toUppercase
以及String.prototype.toUpperCase
,筆者到現在還是記不了到底字串要用哪種方法才能全部轉大寫,每次都要重新上網查挺麻煩的。但有了 TypeScript,它會自動幫我們提示要用後者 —— 也就是toUpperCase
這個方法來避免錯誤。(如圖二) - 可以避免類別或物件(Class & Object)的性質與方法(Property & Method)格式錯誤。例如:我們想要定義某類別必須包含 A 以及 B 方法,但是方法的型別也有很多種類,有時候需不需要回傳新的值也是一個問題。我們可以藉由 TypeScript 自動確認我們寫的方法有沒有回傳相對應的型別與格式。
- 藉由 TypeScript 在 IDE 上的 Autocomplete Feature 來協助開發並且防止錯誤。(如圖一)