TypeScript可選引數(做個timer)

2021-10-01 07:39:07 字數 1606 閱讀 2656

最近在用typescript做乙個新專案,需要移植一批老的js**, 之前最喜歡做這種移植,直接複製黏貼不知道多爽。直到遇到typescript。

乙個簡單的js function:

const

timer

=(start)

=>

;

用的時候只需要:

const start =

timer()

;//do something

const end =

timer

(start)

;//得到乙個something花費的時間

放到typescript中,可選引數必須宣告自己是optional的:

const timer =

(start?

: number)

: number =>

;

關於簡單的timer的故事就到這裡了以後再討論new date().gettime()process.hrtime()的問題。這裡只說typescript可選的引數的問題。

先來個簡單的例子

const sayhello =

(name?

: string)

:void

=>

sayhello()

;//hello stranger

sayhello

("jill");

//hello jill

const sayhello =

(name: string =

"jill"):

void

=>

sayhello()

;//hello jill

sayhello

("tom");

//hello tom

注意,引數裡的?沒了,因為如果帶了預設引數,意思就是如果你不給它引數,它就取預設引數值。這樣不管如何,它一定在的。

還是上面的**

sayhello

(undefined)

;//hello jill

sayhello

(null);

//hello stranger

sayhello(""

);//hello stranger

可以看到,null""都不夠資格使用預設引數。

原因在於它是如何判斷預設引數的,[來看看文件的說法], 文件裡用紅字著重說了,必須是undefined才行。其他的都不算預設引數

(再看看mdn裡怎麼定義預設引數的

注意搜尋關鍵字typeof只有當typeof 引數"undefined"的時候才能用預設引數

然而:

typeof

null

;//"object"

python中非可選引數 Python可選引數

為了有效地使用預設值,您需要了解預設值是如何工作的。函式是物件。因此,它們具有屬性。所以,如果我建立這個函式 def f x,y return y 我建立了乙個物件。其特點如下 dir f call class closure code defaults delattr dict doc forma...

mvn可選引數

引數 描述 pl 選項後可跟隨 或者所選模組的相對路徑 多個模組以逗號分隔 am和 pl連用,同時構建指定模組依賴的模組 amd 和 pl連用,同時構建依賴於指定模組的模組 rf從指定的模組開始構建 n不遞迴子模組 這裡說的依賴包含兩層含義 父子關係 依賴關係 例1 從指定的模組開始構建 mvn c...

C 可選引數 命名引數

1.可選引數 可選引數是.net4中新新增的功能,應用可選引數的方法在被呼叫的時可以選擇性的新增需要的引數,而不需要的引數由引數預設值取代。classprogram privatestaticstringshowcomputer stringcpu i3 370m stringram 4g stri...