四个例子告诉你,什么是——强、弱类型和动态、静态类型

152 阅读1分钟

弱类型:

语言存在大量的隐式转换,使得大部分操作能够通过。例如:

let a = 1;
let b = "2";
let c = a + b; // '12'

强类型:

类型转换潜规则较少,尽量不允许未授意的类型转换。例如:

let a = 1;
let b = "2";
let c = a + b; // TypeError: cannot concatenate 'string' and 'number' objects

动态类型:

在代码运行时才能确定变量类型。编码时一般不需要显式地声明类型。例如

let a = 1;
typeof a === 'number';
a = '2';
typeof a === 'string';

静态类型:

在编译阶段就能确认变量类型,如果未经授意不可改变类型。编码时一般需要显式地声明类型。例如:

let a:number = 1;
a = '2';// Type 'string' is not assignable to type 'number'