函数的类型注解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// 函数返回值的类型注解 fn(): number {}
function getTotal2(one: number, two: number): number {
return one + two
}
getTotal2(1,2)


// 无返回值: void
function sayHello(): void {
console.log("Hello")
}

// 永远执行不玩的函数
function setTimer():never {
throw new Error()
console.log(123)
}

// 参数是对象时的注解 (也可以用接口)
function add({ one, two }: {one: number, two: number}) {
return one + two
}

const total = add({one: 1, two: 2})

// 类型别名方式定义函数类型
type Callback = (a: string) => string
let fn: Callback = (a) => ''

// 接口方式定义函数类型
interface ICallBack {
(a: string): string
}
let fn1: ICallBack = (a) => ''

函数中的this类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
interface TestObj {
a: number,
fn: (x: number) => void
}

// 普通函数的this
let obj: TestObj = {
a: 1,
fn(this: TestObj, x: number){ // 注意这里的this非参数,只是给this类型注解。x还是第一个参数
this.a
}
}


// 箭头函数的this (this是固定指向当前声明函数所在的作用域)
let obj2: TestObj = {
a: 1,
fn(this: TestObj, x: number) {
return () => {
this.a
}
}
}