TS的开始之旅--基础类型

前言 TS最好的手册就是官网文档 ts的文档地址

此文章记录下自己学习TS的过程
//ts的基础类型 和js的基本相同 此外提供了一些其他的方法如(枚举)
定义基本的类型

	//定义布尔值
	let isDone:boolean = false
	//定义字符串
	let isString:string = '123'
	//定义数字
	let isNumber:number = 1
	//定义数组两种方式 在定义数组的时候还需要将数组的元素类型进行明确
	let isArr1:number[] = [1,2,3]
	let isArr2:Array<string> = ['1','2']
	//定义元组  //元组时需要知道已有的元素数量 和类型 这样就可以将不同的数据类型定义在一个数组内
	let x:[string,number];
	x = ['string',1];
	//当你不想限制数组的数量和类型是 你也可以用any 来作为类型 看下方


	
	
	
枚举类型
	enum weekDay {'Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'}
	let weekDay = weekDay .Sunday  //c = 0
	//枚举的默认情况下索引编号是从0开始的  也可以手动指定成员的数值如将上面的例子改成索引从1开始 手动指定时的成员数值 根据前一个成员的值+1
	enum weekDay {'Sunday' = 5,'Monday','Tuesday'=10,'Wednesday','Thursday','Friday','Saturday'}
	let c:weekDay  = weekDay .Sunday  //c = 5
	let b:weekDay  = weekDay .Wednesday//c = 11
	//枚举类型的也可以由值得到名字  如上面的周几 我们已知到值为3 但是不知道其在 weekDay 里面的名字 可以
	enum weekDay {'Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'}
let weekName : string = weekDay [3]  // Wednesday  //方式和数组的是一样

Any 任意数值
//Any  任意数值
	//用于动态获取的内容,如用户输入和第三方代码库  这样的情况下,我们不希望类型检查器对这些值进行检车 可以使用any 类型来标记这个变量
	let notSure :any = 4
	notSure  = '这里是变成字符串' //都可以,类似于js的var 和let 可以赋值成任意值
	//当你只知道一部分数据的类型时,any类型也是有用的。 比如,你有一个数组,它包含了不同的类型的数据:
	let isAnyArr : any[] = [1,false,'12345']
Void 类型
vodi类型和any类型相反,它标识没有任何类型.常用语一个函数没有返回值时,其类型就是void
	function add(str:string):void{
		console.log(str)
	}
声明一个void没有多少意义,因为其只可以赋值null和undefined
let unVoid :void = undefined
Null和Undefined类型
这两种类型的作用也不是很大其类型的值就是自己的本身
一般情况下 这两种类型是任何类型的子类型 即可以给任何类型赋值
但是当制定了--strictNullChecks 标记
	null和undefined 只能给void 和自身赋值
	当然。这种情况下 也可以使用联合类型 给其他的类型赋值
	 let typeA :string | null | undefined = '234'
Never 类型
never类型表示的是那些永不存在的值的类型。
例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never类型,当它们被永不为真的类型保护所约束时。
never类型是任何类型的子类型,也可以赋值给任何类型;
然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。
 即使 any也不可以赋值给never。
//返回Never 的函数必须是无法达到终点
function error(mssage : string) :never {
 throw new Error(mssage)
}
// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
    while (true) {
    }
}
Object类型
Object类型标识非原始类型,也就是除了 number,string,boolean,symbol,null,undefined之外的类型
使用object类型 就可以更好地标识像下面的API
	declare function create(o:object | null):void;
	create({par:1}); //ok
	create(null) ; //ok
	create(1);//error
	create('1234');//error
类型断言
有时,我们会比typeScript更加的准确知道一个值的类型的时候我们就可以使用类型断言,
类型断言有两种方法,第一种是(<>) ,第二种是as方法
	//strContent 入传进来的变量  我们给其断言成string时 就无需ts再去诊断下类型
	let strLength = (<string>strContent).length
	第二种方法
	let strLength = ( strContent  as string).length
两种形式是等价的。 至于使用哪个大多数情况下是凭个人喜好;
然而,当你在TypeScript里使用JSX时,只有 as语法断言是被允许的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值