TypeScript使用泛型实现栈结构的封装和类型校验
栈结构的封装
export default class Stack<T = unknown> {
private items: Array<T>
constructor() {
this.items = []
}
push( element: T ): void {
this.items.push( element )
}
pop(): T | undefined {
return this.items.pop()
}
peek(): T | undefined {
return this.items[this.items.length - 1]
}
size(): number {
return this.items.length
}
isEmpty(): boolean {
return this.items.length === 0
}
clear(): void {
this.items = []
}
}
栈结构的使用
import { Stack } from './stack'
function convert( decNumber: number, base: number ): string {
const stack = new Stack<number>()
let str = ''
const char = '0123456789ABCDEF'
while ( decNumber > 0 ) {
stack.push( decNumber % base )
decNumber = Math.floor( decNumber / base )
}
let i = 1
while ( !stack.isEmpty() ) {
let index: number | undefined = stack.pop()
if ( typeof index === 'number' )
str += char[index]
}
return str
}
console.log( convert( 542, 16 ) )