這是代碼:
declare function test1<T extends unknown[]>(value: T): T
const res1 = test1([1, 2, 3]) // type is number[]
declare function test2<T extends unknown[]>(value: [...T]): T
const res2 = test2([1, 2, 3]) // type is [number,number,number]
操場
如您所見,如果我使用... separator operator,我會得到完全不同的結果型別,我認為[...T]與 相同T,因為 T 擴展陣列。
這是我應該記住并繼續前進的功能嗎?
uj5u.com熱心網友回復:
這是一個功能,盡管它不是一個很好的檔案。如果您在 Variadic tuple types 上檢查此 PR,則 Spreads in array literals部分包含
type
[...T]是T一個類似陣列的型別引數,可以方便地用于指示對元組型別推斷的偏好:
declare function ft1<T extends unknown[]>(t: T): T;
declare function ft2<T extends unknown[]>(t: T): readonly [...T];
declare function ft3<T extends unknown[]>(t: [...T]): T;
declare function ft4<T extends unknown[]>(t: [...T]): readonly [...T];
ft1(['hello', 42]); // (string | number)[]
ft2(['hello', 42]); // readonly (string | number)[]
ft3(['hello', 42]); // [string, number]
ft4(['hello', 42]); // readonly [string, number]
它允許您將陣列作為元組傳遞而無需添加as const(這使陣列及其元素只讀)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/454274.html
標籤:打字稿
上一篇:沒有node_modules檔案夾無法運行nestjs構建
下一篇:Firebase不保存空陣列
