由微软推出的TypeScript自从一推出就广受关注,现在无论开发前端React/Vue,还是后端API,很多项目中都广泛接受了TypeScript。下面介绍TS中函数的使用。

TypeScript
函数的定义
基本函数的类型声明和定义
比如:定义了如下的函数:
TypeScript
let demo = () => {
console.log("Hello");
}
那么,demo的类型就是函数,之后就不能再将别的值赋予这个变量了。比如:如下的赋值将会报错:
TypeScript
demo = "hello"
demo = 3
错误提示信息为:
bash
Type 'number' is not assignable to type '() => void'.(2322)
函数类型变量的声明也可以使用关键字Function:
TypeScript
let demo: Function;
demo = () => {
console.log("Hello");
}
声明函数签名
前面的例子中仅仅声明了某个变量的类型为函数,但并没有定义函数参数及返回值的类型。其实可以同过以下方式来定义一个函数的签名,比如参数个数及其类型,返回值类型等:
TypeScript
let demo: (a: number, b: number, c: string) => number;
demo = (a: number, b: number, c: string) => {
if (c === 'add') {
return a + b;
} else {
return a - b;
}
}
console.log(demo(1, 2, 'add'));
在函数中使用类型别名
TypeScript
type student = {id: string|number, name: string, address: string};
let logger: (s: student) => void;
logger = (s: student) => {
console.log(`${s.name}'s address is ${s.address}`);
}
let lucy = {id: '9901', name: 'Lucy', address: '1 Fake Street'};
logger(lucy);
在函数参数和返回值中使用类型
首先可以通过如下方式定义函数:
TypeScript
interface IStudent {
id: string,
name: string,
age: number
}
const registerStudent: (s: IStudent) => string = (s: IStudent) => {
console.log(s);
return s.id;
}
上面定义略显复杂,可以利用TS的类型推断来简化成这样:
TypeScript
const registerStudent = (s: IStudent) => {
console.log(s);
return s.id;
}
再举一个例子:
TypeScript
function minus(a : number, b : number) : number {
return a - b;
}
let result = minus(9, 4);
函数返回值还可以声明为void(无返回值), never(无法返回,比如死循环,或者抛出异常)
如果函数参数为对象,同时要定义其属性类型的话:
TypeScript
function minus({a, b} : {a : number, b : number}) : number {
return a - b;
}
let result = minus({a: 9, b: 4});