声明变量

  1. let a:number //a数值类型
  2. let b:string //b为字符串类型
  3. let c:boolean //c为布尔类型

如果声明和赋值是同时的,TS可以自动对变量进行类型检测

  1. let d = true //d会自动被监测为布尔类型,此后不可再改为其他类型

联合类型,连接多个类型

  1. let a: number | string //既可赋值数值也可赋值字符串
  2. /*
  3. 只能访问数值和字符串共有的属性。比如,length属性只有字符串有,此时a.length会报错
  4. toString属性number类型和string类型都有,a.toString()不会报错
  5. */

给函数声明值类型

格式:

:::tips function fn(参数:类型, 参数: 类型):类型 {}

:::

举例:

  1. function sum(a: number, b: number, c?: number): number {
  2. return a + b
  3. }
  4. // a:number,b:number声明a,b参数为数值类型。c后面加上?表示此参数为可选参数
  5. // 注:可选参数后面不可以再加上确定的参数,否则会报错
  6. // 例如:function add(a: nunmber, b: number, c?: number, d: number){} 报错
  7. // 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、<类型>变量

:::

指定对象

  1. /**
  2. 第一种------------------------------------------------------------------
  3. **/
  4. let a = object
  5. a = {}
  6. a = function (){}
  7. // 给变量a指定类型为'object',可以给a赋值为{},也可给a赋值为函数(函数也是对象)
  8. /**
  9. 第二种-------------------------------------------------------------------
  10. **/
  11. /**
  12. 语法:{属性名:属性值, 属性名:属性值}
  13. 在属性名后面加上?,表示属性是可选的
  14. **/
  15. let b = {name:string, age?:number}
  16. b = {name: '张三', age: 20}
  17. /**
  18. 第三种--------------------------------------------------------------------
  19. **/
  20. let c = {name: string}
  21. c = {name: '张三', age: 90} //会报错
  22. let d = {name: string, [propName: string]: any} //[propName]: string表示任意字符串的属性名,any表示属性值可为任意值,若改为number则表示后续添加属性只能为number类型
  23. d = {name: '张三', age: 90,} //不会报错

指定函数

  1. /**
  2. 定义两个参数都为number类型,返回值也为number类型
  3. **/
  4. let d = (a: number, b: number) => number
  5. d = function(n1: number, n2: number):number {
  6. return n1 + n2
  7. }

指定数组

  1. /**
  2. 第一种----------------------------------------------------------------
  3. **/
  4. let a: string[] //指定字符串数组
  5. let b: number[] //指定数值数组
  6. /**
  7. 第二种-----------------------------------------------------------------
  8. **/
  9. let c = Array<number> //指定字符串数组
  10. let d = Array<string> //指定数值数组

指定元组

  1. /*元组:定义数组中可添加的类型*/
  2. let num:[string,number] = ['123',1]
  3. num.push('456') //正确
  4. num.push(2) //正确
  5. num.push(true) //错误