TypeScript:给函数定义类型

JavaScript 函数缺点

定义 add() 函数,传入2个参数,返回这两个值的和,代码如下:

// 函数形参、返回值都没有类型
function add(a, b) {
    return a + b;
}

// 调用函数时,由于没有类型校验,传参类型错误也没有提示
let res = add("abc",true)
// var res = add(1, 2);
console.log(res);

通过下面命令执行:

node 5js函数缺点.js

或

ts-node 5js函数缺点.js

执行结果:

abctrue

ts 给函数定义类型

Typescript 可以给函数 形参、返回值 指定类型,当传参不匹配时,就会报错

声明

function 函数名(形参1 : 类型 , 形参2 : 类型) : 返回值类型 {
    return 1
}

例子

解决上面 js 的缺点:

// 定义函数时,就定义好形参、返回值的类型
function add(a : number , b : number) : number {
    return a+b
}

// 调用时,会做类型校验,不匹配会报错
let res : number = add("abc",true)
// let res : number = add(1,2)
console.log(res)

通过下面命令执行:

ts-node 5js函数缺点.ts

执行结果:

void 函数返回值类型

当函数没有返回值类型时,用 void 表示

例子

// 返回值是void类型,表示没有返回值
function test() : void {
    console.log("测试")
}


// 调用
test()

错误例子

// 返回值是void类型,表示没有返回值
function test() : void {
    console.log("测试")
    return 1 // 返回值,编译报错
}

报错如下:

ts 给函数表达式定义类型

声明

const 名字 = function (参1 : 类型 , 形参2 : 类型) : 返回值类型 {
    return 1
}

例子

const add = function (a : number , b : number) : number {
    return a+b
}

let res : number = add("abc",true)
// let res : number = add(1,2)
console.log(res)

ts 给lambda表达式定义类型

声明

const 名字 = (参1 : 类型 , 形参2 : 类型) : 返回值类型 => {
    return 1
}

注意:

  • 没有 function 关键字
  • 返回值后面有 =>

例子

const add = (a : number , b : number) : number => {
    return a+b
}

let res : number = add("abc",true)
// let res : number = add(1,2)
console.log(res)

原文出处:/show_1IX5LRWKsFzs.html