(一)类型声明
- 类型声明是ts非常重要的一个特点
通过类型声明可以指定ts中变量(参数,形参)的类型,调用函数传参时,类型不能错和个数不能多也不能少,否则会报错
- 指定类型后,为变量赋值时,ts编译器会自动检查是否符合类型声明,符合则赋值,否则报错
- 简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型的值
- 语法:
let 变量:类型
let 变量:类型 = 值
function fn(参数:类型,参数:类型):类型(函数返回值的类型,没有可不填){
…
}
(二)自动类型判断
- Ts拥有自动类型判断机制
- 当对变量的声明和赋值是同时进行的,ts编译器会自动判断变量的类型
- 所以变量的声明和赋值是同时进行时,可以不声明变量类型
(三)类型
类型 | 例子 | 描述 |
number | let a : number let a : number = 10 | 任意数字 |
string | let a : string let a : string = “10 类型断言 b = a as string 或者b= <string> a | 任意字符串 |
boolean | True,false | 布尔值 |
字面量 | Let a:’male” | “female” A=male A=female | 限制变量的值就是改字面量的值(其本身),可以使用“|”连接多个变量 |
any | 任意类型,可以赋值给任意变量,赋值给其他变量b,b的类型也会变为any | |
unknow | Let a: unknow A=10 A=’yyy’ | 未知类型的值,安全的any,不能直接赋值给其他变量,赋值需先判断 if(typeOf e === “string”) |
void | function fn1():void { return null } | 表示空,如没有返回值的函数 |
nerver | function fn2():nerver{ throw new error() } | 永远没有返回结果,常用于抛出错误 |
object | 1、Let a:{name:string , age?: number} A={name:’1”,age:2} 2、let b : {name:string , [propName:string]:any } [propName:string]:表示可以有任意一个或多个属性,(对象的属性一定是字符串) 属性的值的类型设为any,不确定值的类型,防止报错 3、设置函数结构的类型声明(规定实参的个数和类型,不对应则报错) (形参:类型,形参:类型。。。)=》返回值 Let d:(a:string,b:string)=>string D=function (n1:string,n2:string):string{ Return n1+n2 } | 对象中可以包含哪些属性 语法:{属性名:属性值,属性名:属性值} |
array | Let a=number/string[] 或let a =Array< number/string > | |
tuple | Let h:[string,number] H=[“张三“,1] | 元组,固定长度的数组 【类型,类型,类型】个数、类型不对会报错 |
enum | Enum Gender{ Male=0, Female=1 } Let i:{name:string,gender:Gender} I={name:”张三”,gender:’Gender.male’} | 枚举,在几个值范围键取值 |
(四)补充:
1、&表示同时
Let j : { name:string} & {age:string},表示对象j至少得有值字符串的name属性、值为字符串的age属性
J={name:”张三”,age:”1”},
2、类型的别名
Type mytype=1 | 2 | 3 | 4 | 5
Let k :mytype
K=2正确;k=7报错