1.ts中定义数组的三种方式:
const 数组名:类型[]
const arr: number = [100,30,60,92]
const 数组名: Array<类型> 泛型 内置的泛型 后面用的多
const arr3: Array<string> = ['a','i']
函数类型的第三种方式(只能在箭头函数和函数表达式用
type FnType = (n1: number, n2: number)=> void
const fn: FnType = (n1,n2)=>{console.log(n1+n2)}
cons fn2:Fntype = (n1,n2)=>{console.log(n1+n2)}
2.联合类型:
需求:一个变量 可以存数字也可以存字符串类型
ts中有一个类型推断,当变量初始化时候,默认会帮你直接推断类型
let temp: number | string |boolean
tem = 11 tem = 'ioio' tem = true
需求 以一个数组,既有数字,也有字符串
let arr: (string | number)[] = [1,2,3,'op']
let arr2: Array<string | number> = ['as',12]
需求 声明一个定时器,存储定时器id
let timeId: number | null = null
timeId = setInterval(()=>{
console.log(111)
},1000)
3.类型别名:
type可以自定义类型,为任意类型起名字
type TestArr = (number | string | boolean)[]
const arr = [123,'ssdsd',true]
另一种方式
type TestItem = number | string | boolean
const arr[] = [123,'ssdsd',true]
通过泛型实现
const Array<TestItem> = [123,'ssdsd',true]
4.函数类型
给函数指定类型 本质上就是给函数参数和 返回值指定类型
function add(uusername: string, password: string):num {
return uusername + password
括号后面的num是给返回值定义的数据类型 如果没有返回值就不需要
}
5.箭头函数
const add =(ni: number,n2: number):number=>{return n1+n2}
6.void类型 没有返回值设置为void
const add = (ni: number,n2: number):void=> {console.log()}
7.对象类型:
写ts可以理解为在写注释 必须通过严格的格式
对象类型 就是修饰属性 和 方法 //描述属性
type USerObj ={ name: string,age: number}
cosnt obj: USerObj= { name: 'sd',age:12 }
//描述方法
type USerObj ={ name: string,age: number sayHi(username: string):void}
要是带参数
cosnt obj: USerObj= { name: 'sd',age:12,sayHi(usernam) {console.log('大家好')}}
练习
type Studth =
{
name: string ,
gender: string,
scrod: number
height: number
study():void
play():void
}
8.接口类型 interface:
使用interface关键字来声明接口
声明接口后 直接使用接口名称作为变量的类型
interface Iobj {
name:string
age: number
sayHi():void
}
const obj: Iobj={
name:'zs'
age:15
sayHi(){}
}
9.元组类型 特殊的数组
// 地图 =》经纬度
let position: [number,numbe] = ['年纪',18]
let [name,age] = test
10.类型推论(没啥用 可以不管)
在ts没有明确给出类型的地方,ts类型推论会提供
1. 声明变量并初始化时
2. 决定函数返回值时
11. 字面量类型
1.字面量类型一般配合联合类型使用
2.type Gender = '男' | '女'
3.let gender: Gender = '男'
4.type Direction = 'up' | 'down' | 'left' | 'right'
5.//改变方向
6.function changeDirection(direction: Direction){
console.log('方向改变了',direction)
}
changeDirection('left')
12.枚举类型
1.定义一组命名常亮(对象,收集键值对的方式)
13:泛型
1.保证安全的前提下,让函数与多种类型一个工作,达到复用的效果
2. 希望类不写死,参数和返回值要求是同一个类型 一一对应
3. 泛型 将类型当成参数传递
4. 泛型在type上的应用
5. 用户信息返回数据类型
6. type UserRespone= {
7. msa: string
8. code: number
9. data: {
10 name: string
11 age: number
12 }
13 }
14 type Data<Type>={
15 msg: string
16 code: number
17 data: Type
18 }
19 type User = {
20 name: string
21 age: number
22 }
23 type userRespone = Data<User>
24 //泛型在函数上使用
25 需求 传参的类型是什么 返回的类型就是什么
26 const getId = <T>(id: T): T =>{
27 return id
28 }
29 let id1 = getId<number>(2)
30 let id2 = getId<string>('2')
31 在函数上使用泛型 命名都要遵循驼峰命名法