我剛剛在一個類中的 TypeScript 檔案中找到了一行,看起來像
private handlers: ((event: string) => void)[]
然后還有另一個功能:
private fire(event: string): void {
for (const handler of this.handlers) {
handler(event);
}
}
所以我的猜測是每個陣列元素都有一個可以呼叫的函式,但我真的不明白這是如何作業的。如果每個元素都附加了始終回傳 void 的函式,那么所有陣列元素不應該都是空的嗎?
或者這是一些神奇的 TypeScript 語法?
uj5u.com熱心網友回復:
打字稿中的括號[]宣告了一個陣列。的語法(...params: any[]) => any宣告了一個函式。所以結合在一起(并使用括號!)你會得到一個函式陣列。
這意味著該handlers屬性是一個函式陣列,它們都采用一個event型別引數string并回傳void。因此,陣列中的元素并非都“具有”可以呼叫的函式,但它們是函式。
這里要注意的重要一點是,陣列只保存函式。它們不被呼叫。要實際運行這些函式,您必須獲取它們(通過迭代或索引陣列)并使用指定的引數呼叫它們,就像其他所有函式一樣。
uj5u.com熱心網友回復:
也許你這樣讀它更容易理解:
private handlers: Function[]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/462368.html
標籤:打字稿
上一篇:根據引數值鍵入函式
