一起来学习TypeScript的类型_第1页
一起来学习TypeScript的类型_第2页
一起来学习TypeScript的类型_第3页
一起来学习TypeScript的类型_第4页
一起来学习TypeScript的类型_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一起来学习TypeScript的类型目录前言一、类型声明二、类型1.number2.string3.boolean4.字面量5.联合类型6.any7.unknown8.void9.never10.object11.array12.tuple13.枚举enum14.其他总结

前言

TypeScript学习笔记第一部分,关于TS的类型声明以及基本类型。

一、类型声明

类型声明类型声明是TS非常重要的一个特点通过类型声明可以指定TS中变量(参数、形参)的类型指定类型后,当为变量赋值时,TS编译器会自动检查值是否符合类型声明,符合则赋值,否则报错简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型的值语法:

let变量:类型;

let变量:类型=值;

functionfn(参数:类型,参数:类型):类型{

}

自动类型判断TS拥有自动的类型判断机制当对变量的声明和赋值是同时进行的,TS编译器会自动判断变量的类型所以如果变量的声明和赋值同时进行时,可以省略掉类型声明

//先声明类型再赋值

leta:string;

a='Hello';

//声明类型并赋值

letb:number=123;

//声明变量和赋值同时进行

letc=false;

c=true;//编译器自动判断变量c为boolean

二、类型

类型例子描述number

1,-33,2.5任意数字stringhi,HI任意字符串booleantrue,false布尔值true或false字面量其本身限制变量的值就是该字面量的值any*任意类型unknown*类型安全的anyvoid空值(undefined)没有值(或undefined)never没有值不能是任何值object{name:Alice}任意的JS对象array[1,2,3]任意JS数组tuple[4,5]元素,TS新增类型,固定长度的数组enumenum{A,B}枚举,TS中新增类型

1.number

leta:number;

a=10;

a=33;

//a='hello';变量a的类型是number,不能赋值字符串

2.string

letb:string;

b='hello';

//b=123;变量b的类型是字符串,不能赋值number

3.boolean

letc:boolean;

c=true;

4.字面量

letd:10;//此时d只能等于10

//letd=11;则会报错,限制了该变量就是字面量的值(有点类似常量)

5.联合类型

letA:boolean|string;//变量A既可以是布尔类型也可以是字符串类型

A=true;

A="Hello";

A=false;

A="World";

//字面量的联合类型限制变量B只能是"male"或"female"

letB:"male"|"female";

B="male";

B="female";

//B="trans"错误

6.any

任意类型,相当于关闭了TS对类型的限制(尽量不要用)。

leta:any;

a=true;

a="hi";

a=123;

//如果声明变量不指定类型,则TS解析器会自动判断变量的类型为any

letb;

b=true;

b="hi";

b=123;

注意any类型的变量可以赋值给任意变量,容易出现问题。

//any任意类型,相当于关闭了ts对类型的限制(尽量不要用)

letB:any;

B=10;

B='string';

B=true;

letS:string;

S=B;//any类型可以赋值给任意类型变量,容易出现问题。

7.unknown

类型安全的any,不能直接赋值给其他变量。

leta:unknown;

a=10;

a="string";

a=true;

letb:string;

//b=a;赋值时编译器会报错,不能将“unknown”类型分配给“string”。

如果一定要赋值,可以赋值前类型判断或者使用断言。

leta:unknown;

a=10;

a=true;

a="string";

letb:string;

*断言:

*1.变量as类型

*2.类型变量

b=aasstring;

b=string

*赋值前类型判断

if(typeofc==='string'){

b=a;

}

8.void

没有返回值=返回的是空值/undefined

functionfoo():void{

console.log(typeoffoo());//=undefined

functionfoo1():void{

returnundefined;

functionfoo3(){

//不写void默认为void

//写了返回值不写返回值类型=自动判断返回值类型

functionfoo4(){

return1;

console.log(typeoffoo4());//=number

9.never

没有值,不能是任何值(连undefined都没有)

functionfoo():never{

thrownewError('raise');

}

10.object

leto:{name:string,age:number};

o={

name:"Edison",

age:25

//定义可选参数

//[propName:string]:any任意类型的属性

leta:{name:string,[propName:string]:any};

b={

name:'Edison',

age:24,

gender:"female"

//定义函数结构

letfoo:(a:number,b:number)=number;

foo=function(n1,n2){

returnn1+n2;

}

11.array

/*

*元组:长度和类型还有顺序必须与储存元素一一对应

*[类型,类型]

leta=[string,number];

a=["hello",123];

//以下报错

a=[123,"hello"];

a=[123];

a=["hello"];

a=["hello",123,456];

12.tuple

/*

*元组:长度和类型还有顺序必须与储存元素一一对应

*[类型,类型]

leta=[string,number];

a=["hello",123];

//以下报错

a=[123,"hello"];

a=[123];

a=["hello"];

a=["hello",123,456];

13.枚举enum

enumGender{

Male=0,

Female=1

letperson:{name:string,gender:Gender};

person={

name:"Edison",

gender:Gender.Male

}

14.其他

//同时满足

leti:{name:string}{age:n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论