声明变量
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 = object
a = {}
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) => number
d = 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) //错误