强类型与弱类型

类型安全维度区分语言类型

强类型更有类型上的约束,弱类型中几乎没有类型约束。

强类型语言中不允许有任意的隐式类型转换,弱类型语言允许数据的隐式类型转换。

强类型

语言层面限制函数的实参类型必须与形参类型相同

1
2
3
4
5
6
7
8
class Main{
static foo(value:number):void{
console.log(value)
}
}

Main.foo('100')//报错:类型“string”的参数不能赋给类型“number”的参数。
Main.foo(100)

弱类型

语言层面不会限制参数类型

1
2
3
4
5
function foo(num){
console.log(num)
}
foo('100')//输出字符串100
foo(100)//输出数字100

静态类型与动态类型

类型检查的角度区分类型系统,分为静态类型语言和动态类型语言。

静态类型

一个变量声明时,其类型就是确定的,在后续代码中,不允许进行类型修改

动态类型

在运行阶段才能够明确变量类型,并且变量的类型随时可以发生变化。

在动态类型中,其变量是没有类型的,而变量中存放的值时有类型的。