TypeScript(一)

特征

类型系统

  1. TypeScript是静态类型:
    类型系统按照「类型检查时机」来分类,可以分为动态类型和静态类型。
    动态类型是指在运行时才会进行类型检查,这种语言的类型错误往往会导致运行时错误。JS是一门解释型语言,没有编译阶段,所以JS是动态类型。

  2. TypeScript 是弱类型:
    类型系统按照「是否允许隐式类型转换」来分类,可以分为强类型和弱类型,TS是完全兼容JS的,它不会修改JS运行时的特性,所以他们都是弱类型。

     例子:
     console.log(1 + '1');  
     // 打印出字符串 '11', ts和js都不会报错
    

适用于任何规模

	类型系统可以为大型项目带来更高的可维护性,以及更少的 bug。

与 ECMAScript 标准同步

环境搭建

1.安装node 16+
2.全局安装 typescript

npm i -g typescript

3.查看版本

tsc -v

4.创建tsconfig.js文件(在指定文件夹内)

tsc --init

5.编译ts文件(只将ts文件转化为js文件,不运行)

tsc index.ts

6.编译并运行

安装全局的ts-node模块
npm install -g ts-node

编译并运行ts文件
ts-node index.ts

变量声明

声明变量指定类型(任意类型都可),这样的变量赋值时只能使用指定类型的值

	let a:number=20;
	let b:String;//大写的是函数
	let c:string='yes';
	let d:boolean=true;

基础类型

类型推论

let a=200//a没有设置类型  在初始化后系统会给它设置一个类型// let a:number=20
a="wrong";//编译报错,因为a的类型为number

1.布尔值

	let x:boolean
	x=true
	// x="hello"报错
	x=100>200
	console.log(x)

2.数字

	let a:number=20

3.字符串

	let c:string="yes!";

类型别名与联合类型

type关键字

	type Mytype=number|string|boolean  //使用type关键字,用类型别名保存联合类型
	let x:Mytype
	x=111
	x="yes"

4.数组

单类型数组

	let arr1:number[]

	let arr2:Array<number>

多类型数组

1.
	type Mytype2=string|number		//联合类型
	let arr3:Mytype[]
	arr3=[111,"right"]

2.
	let arr4:Array<number|string>

3.
	let arr5:number[]|string[]
	let arr6:(number|string)[]

5.元组Tuple

元组固定元素数量和类型(既不能使用方法添加元素,也不能删除元素)

	let arr:[number,number]
	arr=[100,200]
	// arr=[100,"no"]报错
	// arr[100]报错

解构赋值

	let [xx,yy]:[number,string]=[100,'yes']
	// 解构:元组=数据源

6.Null和Undefined

	let a:undefined;
	a=undefined;//undefined类型的数据只有一个值就是undefined  ,可以赋值给void类型
	let b:void;
	b=a;
	let a:null=null;//null类型的数据只有一个值就是null,可以赋值给void类型
	let b:number=100;
	// b=a;报错
	let c:void;
	c=a

7.Void

无效的,表示没有任何类型。 当一个函数没有返回值时,其返回值类型是 void

	let a:void
	function fn():void{
	}
	function fn2():number{
		return 100
	}
	fn2()

8.枚举

枚举成员会被赋值为从 0 开始递增的数字,同时也会对枚举值到枚举名进行反向映射,也可以手动的指定成员的数值

	enum day{a=100,b,c=80,d}
	console.log(day.a,day.b,day.c,day.d)//100,101,80,81
	day.b=2000//报错,只读属性
	enum netWork{net2G,net3G,net4G,net5G,net6G}
	function fn(x:number){
		if(x==0){
		   console.log("做2g的网络请求")
		}
		else if(x==1){
		    console.log("做3g的网络请求")
		}
		else if(x==2){
		    console.log("做4g的网络请求")
		}
		else if(x==3){
		    console.log("做5g的网络请求")
		}
		else if(x==4){
		    console.log("做6g的网络请求")
		}
	}
	fn(netWork.net6G)

9.Never

never类型表示的是那些永不存在的值的类型。一般用于抛出错误

	// 返回never的函数必须存在无法达到的终点
	function error(message: string): never {
    	throw new Error(message);
	}

10.Object

	let p1:object;//非基础类型,引用类型(只能是对象和数组为其赋值)
	p1=[111,'yes']
	p1={one:111,two:"yes"}
	p1=[{},{name:111}]

11.Any

给编程阶段还不清楚类型的变量指定一个类型,这些值可能来自于动态的内容。

	let a:any=100 //any类型的变量  可以赋值任何类型,任何类型都是any类型的子类型
	a="hello"
	a=[]
	console.log(a)
	
	let p1:any=1000 //any类型的数据 的任何成员 都是any类型的
	let b=p1.age.x.x.x.x
	console.log(b)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值