我們先來看個例子,這個場景我們經(jīng)常在開發(fā)的過程中會用到
import { useEffect, useState } from 'react'
export function useDebounce(initialValue: any, delay?: number): any {
const [debounceValue, setDebounceValue] = useState(initialValue)
useEffect(() => {
let timer = setTimeout(() => {
setDebounceValue(initialValue)
}, delay)
return () => {
clearTimeout(timer)
}
}, [initialValue, delay])
return debounceValue
}
看上面的代碼塊,如果我們是TS的新手,那么我們會問,此刻我們傳入的 initialValue 的類型應(yīng)該是什么?我們不知道它會傳入什么類型,所以大多數(shù)情況我們會給它一個 any ,最后它返回的 return debounceValue 也是any類型,這樣是非常不好的,我們無法推斷出 debounceValue 是什么類型?完全也失去了使用TypeScript的價值。
因此我們想問,我們?nèi)绾文軌蜃龅剑瑐魅氲?initialValue 是什么類型,那么我們返回的 debounceValue也是什么類型,此刻我們就可以通過 泛型來解決這個問題。