TypeScript教程之:函数


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

TypeScript
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});

文章作者: 逻思
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 逻思 !