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)

