# Typescript 学习记录
[toc]
# 一、基本类型
# 1. 基本数据类型(type 代表类型)
- any: 任意类型
- string: 字符串类型
- boolean: 布尔类型
- type[],Array: 数组类型两种表示方法
- [type] : 元组,如果要储存类似经纬度这类需要两个数字的数据则可以用 [number,number]
- void : 表示函数无返回值
- null : null 类型
- undefined : undefined 类型
- never : 表示从来不会出现的值
# 2. 函数形参和返回值的类型
1 2 3 4
| let f = (a:number,b:string):string=>{ return a+b } let f = (a:number,b:string):void=>{}
|
# 3. 类型推断
ide 在编译文件时会对变量的类型进行判断,所以在声明一个变量后立马赋值,声明一个对象并对其中的属性赋值又或者函数的返回值与形参有关可以推断出来等等,这些可以推断出来的就无需加上类型。
1 2 3 4 5 6 7
| let a = 1 let obj = { a : 1 } let fun = (a:number,b:string){ return a+b }
|
# 4. 关键字 type 和联合类型
利用 type 给类型取一个别名,type 可以与联合类型一起使用
1 2 3 4 5 6
| type str1 = string let a:str1 type t = number | str1 let b:t type funType = number | string let fun = (a:funType)=>{}
|
# 二、接口
如果一个对象会重复使用,则可以使用将其抽出写成接口。
1 2 3 4 5
| interface Iobj{ a:number b:string } let fun=(b:Iobj):void=>{}
|
# 1. 接口属性
- 可选属性:如果函数的形参对象中的某些属性是可选的。比如在使用 axios 时,传入的配置对象中 method 属性是可选属性如果不传默认是 get。
1 2 3 4 5 6 7
| interface Iobj{ a?:number b:string } let fun=(b:Iobj):void=>{}
let fun=({a=1,b}:Iobj):void=>{}
|
- 只读属性:如果接口中的某些属性不可修改,只读的话则可以使用只读属性
1 2 3 4 5
| interface Iobj{ readonly a:number readonly b:string } let fun=({a,b}:Iobj):void=>{}
|
- 索引类型:索引签名允许我们定义一个可以包含不同属性名称的动态对象并且固定属性的类型必须与索引类型相同或是其子级。
1 2 3 4 5 6
| interface Iobj{ a:number b:string [propName: string]: any } let fun=(abc:Iobj):void=>{}
|