🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
>[success] # 泛型类 ~~~ 1.类和泛型一起使用 ~~~ >[danger] ##### 案例一 ~~~ // 在代码中存在一个问题,它允许你向队列中添加任何类型的数据,当然,当数据被弹出 // 队列时,也可以是任意类型。在上面的示例中,看起来人们可以向队列中添加string 类型的数据 // 但是那么在使用的过程中,就会出现我们无法捕捉到的错误, class Queue { private data: unknown[] = [] push(item: unknown) { return this.data.push(item) } pop() { return this.data.shift() } } const queue = new Queue() queue.push(1) queue.push('str') ~~~ ![](https://img.kancloud.cn/00/a0/00a0d8eaa8cada1f54ecac7cd2b01a8a_470x378.png) * 用泛型改造 ~~~ class Queue<T> { private data: T[] = [] push(item: T) { return this.data.push(item) } pop() { return this.data.shift() } } const queue = new Queue<number>() queue.push(1) queue.pop() ~~~ ![](https://img.kancloud.cn/f7/9a/f79afddd271aa2c249e729dad01b57c4_706x398.png) >[danger] ##### 案例二 ~~~ class Memory<S> { store: S constructor(store: S) { this.store = store } set(store: S) { this.store = store } get() { return this.store } } const numMemory = new Memory<number>(1) // <number> 可缺省 const getNumMemory = numMemory.get() // 类型是 number numMemory.set(2) // 只能写入 number 类型 const strMemory = new Memory('') // 缺省 <string> const getStrMemory = strMemory.get() // 类型是 string strMemory.set('string') // 只能写入 string 类型 ~~~