Lastor
[Coding] 想不到較新的 node.js 居然把 Buffer 的 type 給改了,升級 @types/node 才發現
Lastor
他改細了,現在變成 Buffer<T> 這種,帶泛型的
Lastor
預設是 Buffer<ArrayBufferLike>
Lastor
原本有一些 API function 可以直接餵 Buffer 進去,現在會 ts 抱怨
Lastor
說是 Buffer<ArrayBufferLike> 不符合 BufferSource,才注意到多了一個 BufferSource 這玩意
Lastor
這不知道是真的新加的,還是本來就有,只是改嚴格了。反正以前是沒注意過有這個 type
Lastor
看他這樣做,盲猜應該是為了兼容 Browser 規格的 Buffer 與 node.js 不一樣的問題。而 node.js 本身是可以做基本轉換的
Lastor
現在是讓 type 變得更嚴謹,把不同的 Buffer 區分出來,讓 type 可以區分到底是哪種 Buffer
Lastor
可是這樣就有點困惑,我原本是出 node.js Buffer,餵給符合 WebCrypto 規範的 API,因為他是走 Web 規格,所以 type 定義不是定 Buffer
Lastor
那這樣我的 return type 到底是應該要給 BufferSource 還是要給 Buffer<ArrayBuffer>
Lastor
啊啊,我知道了。困惑的時候就看看 node.js 他自己 type 是怎寫的。現在新版 Buffer.from() 回傳的 type 是 Buffer<ArrayBuffer>
Lastor
跟著他寫就對了
Lastor
這有點坑,現在直接寫 Buffer,他泛型預設是 Buffer<ArrayBufferLike>,有多一個 like,多這個 like 要求 BufferSource 的就會抱怨了。但沒 like 的他接受
載入新的回覆