前言 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];
枚举类型
enum weekDay {'Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'}
let weekDay = weekDay .Sunday
enum weekDay {'Sunday' = 5,'Monday','Tuesday'=10,'Wednesday','Thursday','Friday','Saturday'}
let c:weekDay = weekDay .Sunday
let b:weekDay = weekDay .Wednesday
enum weekDay {'Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'}
let weekName : string = weekDay [3]
Any 任意数值
let notSure :any = 4
notSure = '这里是变成字符串'
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。
function error(mssage : string) :never {
throw new Error(mssage)
}
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});
create(null) ;
create(1);
create('1234');
类型断言
有时,我们会比typeScript更加的准确知道一个值的类型的时候我们就可以使用类型断言,
类型断言有两种方法,第一种是(<>) ,第二种是as方法
let strLength = (<string>strContent).length
第二种方法
let strLength = ( strContent as string).length
两种形式是等价的。 至于使用哪个大多数情况下是凭个人喜好;
然而,当你在TypeScript里使用JSX时,只有 as语法断言是被允许的。