静态类型的优势

提早发现代码中的Bug

function greet(obj){
    obj.sayHello();
}
 
var o = {
    name: "张学友"
}
 
greet(o);

提高代码的可读性

// 如果能指定a和b的类型
// 指定为数字,这个函数的功能就非常明确了
// a: number
// b: number
// 返回值: number
function sum(a, b){
    return a + b;
}

减少了复杂的错误处理逻辑

 
/***
 * 
 * 这个函数接收一个数字数组作为参数
 * 返回这个数组中所有数字的和
 * 
 * 
 * */
// function sum(arr){
//     let result = 0;
//     arr.forEach(v => {
//         result += v;
//     })
//     return result;
// }
 
 
function sum(arr){
    // 首先判断用户是否有传递参数进来
    if(!arr){
        throw new Error("函数需要传参");
    }
 
    if(!Array.isArray(arr)){
        throw new Error("函数需要一个数组作为参数");
    }
 
    if(!arr.every(v => typof v == 'number')){
        throw new Error("函数需要的数组为数字数组!")
    }
 
    let result = 0;
    arr.forEach(v => {
        result += v;
    })
    return result;
}
 
sum([1, 2, 3]);
 
sum(100)
sum(['a', 'b'])
sum()

便于代码重构

function test(num){
    console.log(num)
}
 
test({name: "郭富城"})
 
test({name: "郭富城"})
 
 
test({name: "郭富城"})
 
test({name: "郭富城"})
 
 

增强IDE的功能

IDE: 集成开发环境