• TypeScript是强类型,静态类型的Java Script


    1. 编程语言的分类

    As we all know, JavaScript弱类型动态类型的编程语言。
    在这里插入图片描述
    首先我们来解释一下这几个名词:

    • 动态类型语言:在 运行期间(Runtime) 才去做数据类型检查的语言。
    • 静态类型语言:在 编译其间(Compile) 就进行数据类型检查的,C/C++/Java都是静态语言的典型代表。
    • 强类型语言:强制类型定义,若要修改其类型,必须进行显式类型转换。
    • 弱类型语言:数据类型可以被忽略的语言。(一个变量可以赋予不同类型值)

    对于静态类型与动态类型的区分,有一句名言:

    Static typing when possible, dynamic typing when needed


    2. 举例说明JavaScript的特点

    上面提到JavaScript弱类型动态类型的编程语言。这里我们做一下演示,来吐槽一下。

    // 在这里,定义一个简单的求和函数
    function sum(x,y){
    	return x + y
    }
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    这些就是弱类型的问题,最可怕的是JavaScript是动态类型语言,还必须在运行期间才能发现这些错误。(船到江心才补漏——晚了)

    此时资深人士说了,我们JavaScript也可以避免上述问题:

    // 这样做确实可以(只要你不怕麻烦)
    function sum(x,y){
    	 if(typeof(x) ==="number" && typeof(y)==="number"){
             return x + y
         }else{
             throw "invalid data"
         }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    这时有强类型语言经验的同学发言了—— 给形参加上数据类
    在这里插入图片描述

    
    // 第一种方案:Uncaught SyntaxError: Unexpected token ':'
    function sum(x:number,y:number){
    	return x + y;
    }
    // 第二种方案:ncaught SyntaxError: Unexpected identifier 'x'
    function sum(number x, number y){
    	return x + y;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    难道就没有一种方案,来给JavaScript开发者一丝安全感吗?

    3. TypeScript的强大

    在这里插入图片描述

    TypeScript 与 JavaScript 有着不同寻常的关系。TypeScript 提供了 JavaScript 的所有功能,并在这些功能之上添加了一层: TypeScript 的类型系统

    利用TypeScript的类型系统,我们可以这样写代码:

    类型推断:通过感知 JavaScript 的工作原理,TypeScript 可以构建一个接受 JavaScript 代码但具有类型的类型系统。这个类型系统使得我们不需要添加额外的字符来显式地指定类型

    
    // 创建变量并将其赋值给特定值时, TypeScript 将使用该值作为其类型。
    const name:string = "BertKing"
    // 类型推断
    const name = "BertKing"
    
    function sum(x:number,y:number):numbre{
    	return x + y;
    }
    
    // 同理,TS具有类型推断能力,这里函数的返回值类型也可以省略
    function sum(x:number,y:number){
    	return x + y;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    如果我们调用sum(5,true)就会在编译时报错:
    在终端利用TypeScript的编译器:
    在这里插入图片描述
    使用VSCode:
    在这里插入图片描述
    总之,TypeScript会在代码执行前就报出明显的错误,其带来的严谨性能够有效的避免许多错误。这也就是所谓的TypeScript的静态类型检查

    在这里插入图片描述
    趁热打铁,我们先来认识一下 TypeScript Compiler(TSC)

  • 相关阅读:
    【Proteus仿真】【STM32单片机】水箱液位监控系统
    通过Vue-cli搭建spa项目
    深度学习概念——端对端
    synchronized 的锁类型
    KASan介绍
    基于prometheus与grafana监控starrocks/doris
    bat文件批量打开应用程序/快捷方式
    Java---SSM---SpringMVC(2)
    精神心理科医生:抑郁症正在好转的5种表现
    01 创建前端项目【小白入门SpringBoot + Vue3】
  • 原文地址:https://blog.csdn.net/wangcheeng/article/details/128170683