# 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=>{}//void 表示无返回值

# 3. 类型推断

ide 在编译文件时会对变量的类型进行判断,所以在声明一个变量后立马赋值,声明一个对象并对其中的属性赋值又或者函数的返回值与形参有关可以推断出来等等,这些可以推断出来的就无需加上类型。

1
2
3
4
5
6
7
let a = 1 //ide会推断这个变量a的类型为number类型
let obj = {
a : 1 //同样ide会推断这个a属性为number类型
}
let fun = (a:number,b:string){
return a+b //ide会推断这里的返回值为string
}

# 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
} //a是可选属性,可不传。
let fun=(b:Iobj):void=>{}

let fun=({a=1,b}:Iobj):void=>{} //如果想给a一个默认值,如果没传就使用默认值的话
  • 只读属性:如果接口中的某些属性不可修改,只读的话则可以使用只读属性
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=>{}