普通的js类型指定
let dName: String = 'dav'
let age: Number = 22
let flag: Boolean = false
//联合类型,可以申明多种类型,中间用|隔开
let strArr: String | Number = '张飞'
strArr = 24
//数组也可以使用联合类型
let arr: String[] = ['张三', '李四']
let brr: Array<String> = ['王五', '赵六']
let nArr: String[] | number[] = ['张三', '李四']
nArr = [1, 2]
let nBrr: Array<String | Number> = ['王五', '赵六']
nBrr = [3, 4]
let crr: [String, Number, Boolean] = ['关羽', 28, true] //元组 指定类型和数组长度
TS新增类型
//枚举关键字 enum 创建一个枚举对象
enum GunType {
//枚举项 = 枚举值--不写枚举值默认从0开始添加
'a' = 0,
'b' = 1,
'c' = 2
}
enum GoType {
c,
d,
e
}
let dry: GunType = GunType.a
let cry: GoType = GoType.c
console.log(dry) //0
console.log(cry) //0
//any类型一般用在获取DOM上
let btn: any = document.getElementById('btn')
//void类型代表没有类型,一般用在没有返回值的函数
function fn(): void {
console.log('可以没有返回')
}
function fn1(): String {
return '必须返回指定类型'
}
//never类型 不存在的类型,用作抛出异常是没有返回
函数function类型
// function
function neFn(a: Number, b: String): String {
return a + '' + b
}
let test: String = neFn(18, '张三')
console.log(test)
// function可选参数 ?,在形参后面加上?就表明这个参数可传可不传
function cfun(a: String, b?: Number): void {
console.log(a)
}
cfun('李四')
// function 参数默认值 =值 可以在参数后面加 =和值 来定义默认值
function dfun(a: string = '黄忠', b: number = 16): void {
console.log(a + '' + b)
}
//调用的时候如果没有传对应的实参,则会自动使用默认值
dfun() // 黄忠16 ---两个参数都使用默认值
dfun('张飞') //张飞16 ---第二个参数使用默认值
dfun('关羽', 25) //关羽25 ---两个参数都不用默认值
// 当你第二个参数传,第一个参数想使用默认值时可以给第一个参数传undefined
dfun(undefined, 18) //黄忠18 ----第一个参数使用默认值
//function剩余参数
//当你的函数不确定后面要传几个参数时,除了固定参数,后面的所有参数可以用...和一个数组来接收,只能使用一个剩余参数
function add(x: number, y: number, ...z: number[]): number{
let lum: number = x + y
if (z) {
z.forEach(item => {
lum += item
})
}
return lum
}
console.log(1,2) //3
console.log(add(1,2,3,4,5,6,7,8,9)) //45