JavaScript 的超集 TypeScript

2023-12-13 12:08
文章标签 java script typescript 超集

本文主要是介绍JavaScript 的超集 TypeScript,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

TypeScript概述

TypeScript是一门基于JavaScript基础之上的语言。 很多时候也说TypeScript是JavaScript的超集(扩展集)。它是一门完整的编程语言。

 所谓超集,就是在JavaScript的基础之上多了一些扩展特性,多出来的就是一套更强大的类型系统,以及对ECMAScript的新特性的支持。它最终会被编译为原始的JavaScript。

也就是说,使用TypeScript后,就可以使用TypeScript的新特性,以及它更强大的类型系统。

完成开发后,再将代码编译成能够在生产环境中直接运行的JS代码。

使用TypeScript的优势:

1.类型系统的优势跟flow类似,帮我们避免在开发过程当中有可能会出现的类型异常。提高编码的效率,以及代码的可靠程度。

2.支持ES6的新特性;还支持转换新特性向低版本ECMAScript兼容(类似与babel),最低可以编译为ES3的版本。

3.TypeScript可以编译成标准的JavaScript,任何一种JavaScript运行环境下的应用程序(浏览器、node、react Native、electron),都可以使用TypeScript去开发。

4.生态健全完善,特别是在开发工具这块。

目前很多大型开源项目都已经使用TypeScript去开发,

  • angular2 的开发语言
  • vue3.0会使用TypeScript取代flow
  • TypeScript慢慢的已经成为前端领域的第二语言。

缺点:

1.语言本身多了很多概念,提高了学习成本(接口,泛型,枚举等等)

2.对于周期短的小型项目,TypeScript可能会增加一些开发成本。 因为项目初期可能回去编写很多的类型声明,比如对象,函数会有很多的类型声明需要去单独编写。(对于大项目而言这些成本不算什么,而且很多时候是一劳永逸的)。

 

不过TypeScript是渐进式的,即便对TypeScript不了解,也可以按照JavaScript标准语法去编写TypeScript代码,可以把它当作JavaScript去写,学习中了解到一点就用一点。

总的来说,前端这个行业再往后发展,TypeScript应该是一门必要的一门语言了。

TypeScript快速上手

安装:TypeScript是npm模块,先构建一个新项目,然后安装TypeScript到项目中:

yarn init --yes

把TypeScript 作为项目的开发依赖去安装

yarn add typescript --dev

安装好后可以看到node_modules文件夹的bin目录下多出一个tsc的命令,它的作用就是编译TypeScript 代码。

编译:

现在就可以使用TypeScript编写代码,不过我们还没有了解任何TypeScript的语法,没关系,因为TypeScript是基于JavaScript之上的。所以完全可以按照JavaScript语法去编码,而且它支持最新的ECMAScript标准。

在项目根目录下创建01-started.ts文件,这个文件里面的代码是简单的ES6语法的JavaScript代码,并没有特殊的用法,尝试用TypeScript去编译一下:

const hello = name => {console.log(`hello,${name}`)
};
hello('TypeAcript')

命令行终端执行: 

 yarn tsc 01-started.ts

完成后可以发现项目根目录下多了一个同名的js文件。可以发现我们编写的ES6标准的代码被转换成了ES3标准的代码:

更强大的类型系统:

除了编译转换ES的新特性,TypeScript更重要的是为我们提供了更强大的类型系统。

跟flow的用法十分类似。

回到01.started.ts文件,这里限制函数name参数的类型为string类型,可以在name后面跟上:string这样一个类型注解

const hello = (name : string) => {console.log(`hello,${name}`)
};
hello(999)    //这里会报出语法错误
//但是依旧可以编译完成。如果要在报错的时候终止 js 文件的生成,可以在 tsconfig.json 中配置 noEmitOnError 即可

此时调用时传入了number,再次去编译就会报出语法错误。

而且vscode默认就会对TypeScript语法做出类型检测,不用等到编译,在编辑器中就可以直接看到错误提示。

在命令行终端执行编译:执行tsc编译文件的过程会报出错误

把传入的参数改为字符串的类型数据,执行tsc编译后可以看到,之前添加的类型注解也被移除掉了:

总结一下使用TypeScript的基本过程:

1.安装TypeScript模块。可以安装到全局,也可以安装到本地;

2.这个模块提高了tsc命令,去编译TypeScript文件;

3.编译过程中,回去检查我们代码中的类型使用异常,移除类型注解的一些Ts扩展语法;

4.编译过程中还会自动去转换ES的新特性。

 

TypeScript配置文件

tsc命令不仅可以去编译指定的某个ts文件,就还可以用来编译整个项目或整个工程。不过在编译之前会先给项目创建一个TypeScrip的配置文件。

这里可以使用TypeScrip的命令自动生成配置文件。

yarn tsc --init

完成后再项目的根目录下就可以看到tsconfig.json文件。 

注意:用tsc 执行指定的ts文件时tsconfig.json文件不会生效,直接tsc整个项目的时候配置文件才会自动生效。

这篇关于JavaScript 的超集 TypeScript的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/488409

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定