• ts 中,我们可以对变量的类型进行约束,比如下面这样
    TypeScript 学习总结 —— 类型约束_typescript

  • 当我们把 a 声明为 number 类型的变量,就不可以再为它赋其他类型的值

  • 但实际上,即使我们不显式指定它的类型,ts也可以自动推断出正确的类型,如下
    TypeScript 学习总结 —— 类型约束_TypeScript_02

  • 因为给 a 赋初值的时候,为它指定的123number 类型的,所以 ts 知道,anumber 类型的

  • 因此,不可以再给 a 赋其他类型的值

  • 既然不需要给变量显式的类型约束,ts 也可以得到变量的类型,那么,有没有其他情况,需要显示给变量指定类型的,如下

  • 首先看第一种情况
    TypeScript 学习总结 —— 类型约束_TypeScript_03

  • 因为 sum 函数的返回值类型是不确定的,因此 a 的类型就不确定,所以,需要我们去指定 a 的类型,如下:

  • TypeScript 学习总结 —— 类型约束_typescript_04

  • 第二种情况
    TypeScript 学习总结 —— 类型约束_typescript_05

  • 如果我们的本意是想求 123 + 123 = 246,但是不小心传入了字符串参数,那么得到的结果就会是'123123',并且 js 不会报出任何的错误,这时,就需要显式的指定类型,如下:
    TypeScript 学习总结 —— 类型约束_typescript_06

  • 当参数类型不正确时,可以及时发现错误

  • 总结:并不是任何时候都需要给变量明确指定类型,因为 ts 会自动推断。只有 ts 无法正常推断,或者函数形参时,才有必要显式声明