声明变量
let a:number //a数值类型let b:string //b为字符串类型let c:boolean //c为布尔类型
如果声明和赋值是同时的,TS可以自动对变量进行类型检测
let d = true //d会自动被监测为布尔类型,此后不可再改为其他类型
联合类型,连接多个类型
let a: number | string //既可赋值数值也可赋值字符串/*只能访问数值和字符串共有的属性。比如,length属性只有字符串有,此时a.length会报错toString属性number类型和string类型都有,a.toString()不会报错*/
给函数声明值类型
格式:
:::tips function fn(参数:类型, 参数: 类型):类型 {}
:::
举例:
function sum(a: number, b: number, c?: number): number {return a + b}// a:number,b:number声明a,b参数为数值类型。c后面加上?表示此参数为可选参数// 注:可选参数后面不可以再加上确定的参数,否则会报错// 例如:function add(a: nunmber, b: number, c?: number, d: number){} 报错// sum(a:number, b:number):number {} 声明返回值为number
类型
| 类型 | 例子 | 描述 |
|---|---|---|
| number | 1, -33, 2.5 | 任意数字 |
| string | ‘hello’, ‘123’ | 任意字符串 |
| boolean | true, false | 布尔值true或false |
| any | * | 任意类型,可以赋值给其他任意变量 |
| unknow | * | 任意类型,不可以赋值给其他变量 |
| void | 空值(undefined) | 没有值(或undefined) |
| never | 没有值 | 不能是任何值 |
| object | {name: ‘张三’} | 任意的js对象 |
| array | [1, 2, 3] | 任意的js数组 |
| tuple | [4, 5] | 元素,TS新增类型,固定长度数组 |
| enum | enum{A, B} | 枚举,TS中新增类型 |
类型断言
作用:可以用来告诉解析器变量的实际类型。
语法:
:::tips 1、变量 as 类型
2、<类型>变量
:::
指定对象
/**第一种------------------------------------------------------------------**/let a = objecta = {}a = function (){}// 给变量a指定类型为'object',可以给a赋值为{},也可给a赋值为函数(函数也是对象)/**第二种-------------------------------------------------------------------**//**语法:{属性名:属性值, 属性名:属性值}在属性名后面加上?,表示属性是可选的**/let b = {name:string, age?:number}b = {name: '张三', age: 20}/**第三种--------------------------------------------------------------------**/let c = {name: string}c = {name: '张三', age: 90} //会报错let d = {name: string, [propName: string]: any} //[propName]: string表示任意字符串的属性名,any表示属性值可为任意值,若改为number则表示后续添加属性只能为number类型d = {name: '张三', age: 90,} //不会报错
指定函数
/**定义两个参数都为number类型,返回值也为number类型**/let d = (a: number, b: number) => numberd = function(n1: number, n2: number):number {return n1 + n2}
指定数组
/**第一种----------------------------------------------------------------**/let a: string[] //指定字符串数组let b: number[] //指定数值数组/**第二种-----------------------------------------------------------------**/let c = Array<number> //指定字符串数组let d = Array<string> //指定数值数组
指定元组
/*元组:定义数组中可添加的类型*/let num:[string,number] = ['123',1]num.push('456') //正确num.push(2) //正确num.push(true) //错误
