类型格式
格式:普通变量:
let|const 变量名:类型 = 值
函数:
(变量:类型)=>返回值类型
方法名(变量:类型): 返回值类型{}
function 方法名(变量:类型): 返回值类型{}
基础类型
string、number、boolean、undefined、null、symbol、void
let courseName :string = '大圣编程课堂'let age :number = 18let isOnline :boolean = true
any数据类型
any数据类型:可以是任何数据类型的值
let anyThing :any
组合的数据类型
let course : number|string = '大圣'course = 18
对象类型
对象
let obj: {"name": string,"age": number} = {"name":"zhangsan","age":18}
数组
// 1. 数组值 全是number类型let arr: number[] = [1,2,3]// 2. 数组值 number或stringlet arr: (string|number)[] = [1,2,'a',3,'bb']// 3. 数组值 任意类型 => 任意类型可以不加let arr2: any[] =[1,2,3,'4',[1,2]]// 4. 数组类型 对象 => let arr: {}[] = [{}]let arr: {name:string,age:number}[] = [ // arr后的对象可以使用 type定义类型别名==>简化写法{name:'zhangsan',age:14},{name:'lisi',age:18}]
元祖
元祖:限定数组固定格式
// 1. 限定数组值只有两个,第一个必须是number,第二个必须是stringlet arr1: [number,string] = [1,'1']// 2.限定数组值必须是数组 且 数组值的值必须是三个,第一个第二个必须是字符串,第三个必须是numberlet arr2: [string,string,number][] = [['a','a',1],['b','b',2],['c','c',3]]
类
class Person{}const per:Person = new Person()
函数
// fn为函数名;冒号后为数据类型,规定函数返回这值只能是number;等号后为函数体let fn: ()=>Number = ()=>{return 123}
类型注解
类型注解:我们定义变量是什么类型;简而言之,我们要规定出变量的类型。
let num1: number = 123 // 定义变量类型是number
函数类型注解
void代表为空,不能有返回值- 如果不定义函数 行参 和 返回值 的类型,那么默认为any ```javascript // 1.定义函数的参数v1、v2都为number;定义函数的返回值为string; function fn1(v1:number,v2:number) : string{ return v1 + v2 + ‘str’ } let res1 = fn1(1,2) // res1自动类型推断为string
// 2.函数定义参数v1为string、v2为number;定义函数返回值是void,void代表为空; function fn2(v1:string,v2:number): void{ return } let res2 = fn2(‘str’,1) // res2自动类型推断为void
- 解构类型的函数注解```javascriptfunction fn1({v1,v2}:{v1:number,v2:string}):string{return v1 + v2}let res = fn1({v1:1,v2:'2'})
类型推断
类型推断指 ts会自动分析出来变量的类型。简而言之:即使我们不注解变量的类型,ts也不会报错,会自动识别出变量的类型。 
如图:ts可以自动推断出str为string
类型推断和类型注解什么时候用?
- 如果ts能够自动分析出变量类型,那咋们就不加了
- 如果ts不能自动分析出变量类型(如分析出为any),那咋们就是用类型注解
