目录
- 一、类型推断和类型注解
- 二.类型注解,声明时指定类型
- 三、类型断言
- 四、基础类型和联合类型
- 字符串
- 数字和浮点类型
- 布尔
- 空和undefined
- 多类型
- 值限定
- 五、数组 元组 枚举
- 数组
- 元组,?代表可选参数
- 枚举
- 枚举使用
- 六、函数
- 函数作为参数
- 七、类、接口与抽象类
- 类
- 访问修饰符
- 类的继承
- 接口
- 抽象类
- 命名空间
- 八、类型别名
- 九、泛型
- 十、运算符
- 十一、条件控制
- 十二、循环控制
- 十三、正则表达式
一、类型推断和类型注解
//1. 类型约束
let str = '赵云'
//str = 10 会报错,因为初始值约束为字符串
二.类型注解,声明时指定类型
let str2:string = '张飞'
三、类型断言
let nums = [1,2,3]
var result = nums.find(i => i>2)
//var ss = result * 2 //这样会报错//可以添加类型断言as xx 关键字 断言是某种类型
var result2 = nums.find(i => i>2) as number
var ss = result2 * 2
四、基础类型和联合类型
字符串
//省略类型
let author = '李白'
//指定类型
let author2:string = '李白'
数字和浮点类型
let n2:number = 10
let n3:number = 1.1
布尔
let b1:boolean = true
空和undefined
let nu:null = null
let und:undefined = undefined
多类型
let v4 :string|null = null
值限定
//let v5 : 1|2|3 = 5//会报错
let v6:1|2|3 = 2
五、数组 元组 枚举
数组
let nums3:number[] = [1,2,3]
//省略类型
let nums2 = [1,2,3]
//数组
let nums3:number[] = [1,2,3]
//在数组后面追加元素
nums3.push(4)
//在数组前面添加元素
nums3.unshift(1)
//删除最后面的元素
nums3.pop()
//从第几位开始删除几个
nums3.splice(0,1)
//删除最前面的
nums3.shift()
let nums4 = [1,2,3]
//合并两个数组
nums3.concat(nums4)
//根据下标查找元素位置
nums3.indexOf(2)
//排序
nums3.sort()
nums3.reverse()
元组,?代表可选参数
let ccc :[number,string,number,number?]= [1,'2',2]
//省略类型
let ccc2= [1,'2',2,6]
枚举
enum My{A,B,c
}
枚举使用
My.A
//或者
My[0]
六、函数
//函数:a默认值是2,b是可选参数,c是剩余参数,返回值为string类型
function login(a:number = 2,b?:string,...c:string[]):string{
return "jack"
}//调用函数
login(1,"","1","2","3")
函数作为参数
function toExit(exit:Function){//执行exit("nickk")}//第一种调用
function handleExit(nickk:string){console.log('退出1')
}
toExit(handleExit)//第二种调用 匿名调用
toExit(function(nickk:string){console.log('退出2')
})//第三种调用
toExit((nickk:string)=>{console.log('退出3')
})
七、类、接口与抽象类
类
//类
class Person{
//静态属性
static DES:string = '张飞'nick:string = '默认'count:number = 2//构造方法constructor(nick:string,count:number){this.nick = nickthis.count = count}//方法say(nick:string){}//静态方法static play(nick:string){}
}
//使用类
let p = new Person('tom',5)
//p.nick = 'jack'
p.say('飞飞')
Person.play('飞飞')
访问修饰符
public protected private
类的继承
//继承extends
class Student extends Person {}
//使用
let stu = new Student('jack',6)
stu.count = 10
接口
//接口
interface People{name:string,age:number,}const Man:People = {name:"jack",age:18
}
抽象类
//抽象类
abstract class Persons{name:string = 'tom'play(){}//抽象方法abstract jump2():any}
class Teacher extends Persons{//继承抽象类,必须重写抽象方法jump2(){}}
命名空间
namespace aa{//在命名空间内添加export 可被外部调用export class Person{}
}
namespace bb{class Person{}
}
let ap = new aa.Person()
//let bp = new bb.Person() 报错找不到
八、类型别名
//非自定义模式
let nickName :string | number = "jack"
let nickName2 :string | number = 20
//自定义类型别名
type MyNickName = string | Numberlet nickName3:MyNickName = "TOM"
let nickName4:MyNickName = 33
九、泛型
function count(a:number, b:any):number[]{
return [a,b]
}//通过泛型改造后
function add<T>(a:T, b:T):T[]{
return [a,b]
}add<number>(1,2)
//add(1,2) 可省略类型
add<string>("jack","tom")
//add("jack","tom") 可省略类型
十、运算符
//+ - * / % ++ -- +=
//> < >= <=
//== 判断值相等
//=== 判断值和类型都相等
//!= 值不相等
//!== 值和类型都不相等
//&& 并且
//|| 或者
十一、条件控制
// if else if else
// switch case
let age = 10
switch(age){case 1:breakcase 2:break;default:
}
十二、循环控制
let a = 2
while(a>1){}
//至少执行一次
do{}while(a>2)let names:string[] = ['张飞','赵云']
for(let i = 0;i<8;i++){var res = names[i]if(i>5){break}else {continue}
}
for(let n of names){//直接得到值var res = n
}
for(let index in names){//索引var resIndex = index
}
十三、正则表达式
…