




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一起来学习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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物农药在病虫害综合治理中的作用考核试卷
- 航空器飞行数据记录器分析与应用考核试卷
- 2025年耐磨球段项目合作计划书
- 数字智慧方案5473丨人力资源HR信息化解决方案
- 《化学键的性质》课件
- 2025年高密度聚乙烯土工膜项目建议书
- 中学数学课件:正确运用解题方法与技巧
- 找拼音小游戏课件
- 2019-2025年统计师之初级统计工作实务能力提升试卷A卷附答案
- 2019-2025年初级银行从业资格之初级银行管理考前冲刺模拟试卷B卷含答案
- 2022年同等学力人员申请硕士学位日语水平统一考试真题
- 文学欣赏电子教案(全)完整版课件整套教学课件
- DBJ51∕T 153-2020 四川省附着式脚手架安全技术标准
- 游泳池设备操作培训课件
- 城轨道交通人因事故分析及评价研究
- (完整版)羊水栓塞应急预案演练记录
- ZYWL-4000型履带式钻机
- (高清版)建筑防护栏杆技术标准JGJ_T 470-2019
- 脑梗死标准病历、病程记录、出院记录模板
- 50MPa路面抗折混凝土配合比
- 油阀座加工工艺与夹具设计说明
评论
0/150
提交评论