搜尋

首頁  >  問答  >  主體

javascript - 函數參數的形式不太懂是什麼意思

export class HashHistory extends History {
constructor (router: VueRouter, base: ?string, fallback: boolean) {

// 调用基类构造器
super(router, base)

}

以上這段程式碼中constructor的參數中鍵值對的形式編寫時什麼意思,其中"base: ? string "這裡的「?」又是什麼意思,勞煩大家指點一二,謝謝!

为情所困为情所困2701 天前894

全部回覆(2)我來回復

  • 大家讲道理

    大家讲道理2017-07-05 10:49:09

    這個不是ES6的語法,而是用flow.js加上的型別約束。
    flow是facebook做的靜態類型檢查器,用於在js程式碼裡指定變數類型,在大型JS專案裡靜態類型可以事先檢查很多錯誤。
    這裡面base:?string指的是base這個形參的傳入需要是一個?string類型,?string是一個maybe type,意思是可以傳入string,null或者undefined,但如果是一個maybe type,意思是可以傳入string,null或者undefined,但如果是一個maybe type,意思是可以傳入string,null或者undefined,但如果是其他類型就會出錯。

    vue官方的專案都加了flow的類型限制。

    flow.js的官網在這 https://flow.org/en/docs/gett...

    回覆
    0
  • 淡淡烟草味

    淡淡烟草味2017-07-05 10:49:09

    這個明顯不是ES6 的語法,ES6 裡不會有類型一說,這看起來比較像是TypeScript 的語法,冒號左邊是參數名,右邊是參數類型,問題表示可選參數,但如果說是TypeScript,這裡有兩個文法問題

    1. base:?string 不是 TypeScript 語法,base?: String

    2. fallback 不是可選參數,但 TypeScript 中不允許非可選參數放在可選參數(base?)的後面

    建議你給點更詳細的資訊

    回覆
    0
  • 取消回覆