// TypeScript变量类型演示 - 自动生成所有主要类型
// 基本类型变量组
const basicTypes = (() => {
// 字符串类型
let a: string = 'hello'
// 数字类型
let b: number = 111
// 布尔类型
let c: boolean = true
// 任意类型
let d: any = '可以是任何值'
// null类型
let e: null = null
// undefined类型
let f: undefined = undefined
// Symbol类型
let g: symbol = Symbol('sym')
return {a, b, c, d, e, f, g}
})()
// 对象类型变量组
const objectTypes = (() => {
// 普通对象类型
let h: object = {}
// 函数类型
let i: Function = () => {}
// 数组类型
let j: Array<string> = ['a', 'b']
// 对象字面量类型
let k: { name: string, age: number } = { name: 'John', age: 30 }
// 元组类型
let l: [string, number] = ['age', 30]
return {h, i, j, k, l}
})()
// 内置对象类型变量组
const builtInTypes = (() => {
// Date类型
let m: Date = new Date()
// 正则表达式类型
let n: RegExp = /abc/
// 错误对象类型
let o: Error = new Error()
return {m, n, o}
})()
// 高级类型变量组
const advancedTypes = (() => {
// Map类型
let p: Map<string, number> = new Map()
// Set类型
let q: Set<string> = new Set()
// WeakMap类型
let r: WeakMap<object, string> = new WeakMap()
// WeakSet类型
let s: WeakSet<object> = new WeakSet()
// Promise类型
let t: Promise<string> = Promise.resolve('done')
return {p, q, r, s, t}
})()
// 类型别名和接口
interface Person {
name: string
age: number
}
type ID = string | number
// 使用类型别名和接口的变量
const u: Person = { name: 'Alice', age: 25 }
const v: ID = '12345'
// 导出所有变量以便测试
export {
basicTypes,
objectTypes,
builtInTypes,
advancedTypes,
u as person,
v as userId
}