Typescript泛型类

2020-07-16  本文已影响0人  叶小七的真命天子

customRef

 type CustomRefFactory<T> = (track: () => void,trigger: () => void) => {
  get: () => T
  set: (value: T) => void
}

 function customRef<T>(factory: CustomRefFactory<T>): any {
  const { get, set } = factory(
    () => console.log('get value'),
    () => console.log('set value')
  )
  const r = {
    get value() {
      return get()
    },
    set value(v) {
      set(v)
    }
  }
  return r
}

const ss = function (value) { 
  return customRef((track,trigger)=>{
  return {
    get() {
      track()
      return value
    },
    set(val) {
      value = val
      trigger()
    }
  }
})
}   

let number = ss(11)
console.log(number.value)
number.value = 22
type FilterFn<T> = (item: T,index?:number,array?:T[]) => boolean

class Arrays <T>{
    value: T[]
    constructor(...args: T[]){
        this.value = args
    }
    filter(fn:FilterFn<T>):T[]{
        const array:T[] = []
        const len = this.value.length
        let index = -1
        while(++index<len){
            const element = this.value[index]
            const ret = fn(element,index,this.value)
            if (ret){
                array.push(element)
            }
        }
        return array
    }
}

const sd = new Arrays<number>(1,2,3)

console.log(sd.filter(item=>item>2))
上一篇 下一篇

猜你喜欢

热点阅读