TypeScript自学课(1)-强类型与弱类型

1,541 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第10天,点击查看活动详情

类型

如果你用维基百科搜索类型这个词的定义,会发现: 类型存在于各个领域。

而在计算机中,类型可以确认一个值或者一组值具有特定的意义和目的(虽然某些类型,如抽象类型和函数类型,在程序运行中,可能不表示为值)。

熟悉一点编程知识的人知道“HelloWorld”是一个字符串类型, 1234是数字类型,true是布尔类型。

类型是编程的基础。JS有类型,其他编程也有类型。

JavaScript 语言中类型集合由原始值对象组成。

由类型引申的需要特别需要注意的概念还有:

类型系统(英语:type system)用于定义如何将编程语言中的数值表达式归类为许多不同的**类型**,如何操作这些类型,这些类型如何互相作用。

类型检查所进行的检验处理以及实行类型的约束,可发生在编译时期(静态检查)或运行时期(动态检查)。静态类型检查是在编译器所进行语义分析中进行的。如果一个语言强制实行类型规则(即通常只允许以不丢失信息为前提的自动类型转换)就称此处理为强类型,反之称为弱类型

弱类型

像VB,PHP,JavaScripJS是弱类型语言,创建一个属性或者变量,即使分配了某种确定类型的值,我们仍然可以在运行时切换类型。

let userName='搞前端的半夏'

userName=123

强类型

像Java,Python,C++就是强类型语言,在变量定义的时候,就会指定变量的类型。

int userName='搞前端的半夏'

一旦变量的类型确定,如果不经过强制类型转换,那么它永远就是该数据类型。

TS是强类型的,一旦我们给创建的变量分配了一个 特定类型的值,TypeScript就会要求我们该变量的值保持类型不变。

对于上面的代码,我们用TS重写:

let userName:string='搞前端的半夏'
userName=123

在TS环境中会报错:

image-20220406232626995

同时大家会发现:

弱类型的语言在声明变量时,并不会明确的指定变量的类型

强类型的语言则必须指定变量的类型,正如在C语言中我们想要定义一个数字类型的变量,我们必须使用int或者float:

float f,x=3.6,y=5.2;
int i=4,a,b;