第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Typescript 中從數(shù)組中隨機選取 N 個項目的函數(shù)

在 Typescript 中從數(shù)組中隨機選取 N 個項目的函數(shù)

慕碼人2483693 2023-07-06 17:48:08
我使用泛型類型參數(shù):T extends unknown[],因為此函數(shù)應(yīng)該適用于任何類型的數(shù)組。export const pickRandomItems = <T extends unknown[]> (arr: T, n: number): T => {? const shuffled = Array.from(arr).sort(() => 0.5 - Math.random());? return shuffled.slice(0, n);};但我在聲明中收到以下錯誤return:如果我進行類型斷言,它就會消失。但為什么有必要呢?難道我做錯了什么?筆記:下面的行被評估為unknown[],那么為什么類型斷言仍然是必要的呢?const?result?=?shuffled.slice(0,?n);
查看完整描述

2 回答

?
ibeautiful

TA貢獻1993條經(jīng)驗 獲得超6個贊

將類型參數(shù)更改為數(shù)組項,而不是整個數(shù)組:


export const pickRandomItems = <T extends unknown> (arr: T[], n: number): T[] => {

? const shuffled = Array.from(arr).sort(() => 0.5 - Math.random());

? return shuffled.slice(0, n);

};


雖然T extends unknown[]does 意味著T可以是任何數(shù)組,但它也可以是 的子類型Array,這意味著slice不會返回適當(dāng)?shù)念愋停ㄋ鼘⒎祷?code>Array而不是任何T類型)。通常,您不能將具體類型分配給泛型類型參數(shù),因為泛型類型參數(shù)可以是調(diào)用者決定的任何子類型,而您在實現(xiàn)中使用特定的具體類型。


查看完整回答
反對 回復(fù) 2023-07-06
?
繁花不似錦

TA貢獻1851條經(jīng)驗 獲得超4個贊

您遇到的問題是 T 可以是 的任何子類型unknown[],但是您的函數(shù)返回一個數(shù)組。因此,打字稿警告您數(shù)組不能轉(zhuǎn)換為T,這可能是數(shù)組的某個子類。相反,您可以將 T 更改為項目,并采用可迭代作為參數(shù)并返回一個數(shù)組:


// trailing comma in generic so ts doesn't confuse with jsx

export const pickRandomItems = <T,> (arr: Iterable<T>, n: number): T[] => {

  const shuffled = Array.from(arr).sort(() => 0.5 - Math.random());

  return shuffled.slice(0, n);

};


查看完整回答
反對 回復(fù) 2023-07-06
  • 2 回答
  • 0 關(guān)注
  • 358 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號