TypeScript 简介

文档

  1. typeScript官网
  2. 中文文档:https://www.tslang.cn/index.html
  3. 中文文档(简洁点):https://typescript.bootcss.com
  4. MDN

前言

JavaScript 引入编程社区已有 20 多年,如今已成为有史以来使用最广泛的跨平台语言之一。JavaScript 最初是一种用于为网页添加简单交互性的小型脚本语言,如今已发展成为各种规模的前端和后端应用程序的首选语言。虽然用 JavaScript 编写的程序的大小、范围和复杂性呈指数级增长,但 JavaScript 语言表达不同代码单元之间关系的能力却没有增长。再加上 JavaScript 相当特殊的运行时语义,语言和程序复杂性之间的这种不匹配使得 JavaScript 开发成为一项难以大规模管理的任务。

程序员最常犯的错误可以归结为类型错误:在需要不同类型的值的地方使用了某种类型的值。这可能是由于简单的拼写错误、未能理解库的 API 界面、对运行时行为的错误假设或其他错误造成的。
TypeScript 的目标是成为 JavaScript 程序的静态类型检查器 - 换句话说,它是一个在代码运行之前运行的工具(静态),并确保程序的类型正确(类型检查)。

什么是TypeScript

TypeScript 是一种由微软开发的自由和开源的编程语言,它是 JavaScript 的一个超集,扩展了 JavaScript 的语法。

TypeScript 是一个为 JavaScript 添加静态类型检查的编程语言。

语言特性

TypeScript 是一种给 JavaScript 添加特性的语言扩展。增加的功能包括:

  • 静态类型系统
    • 类型批注和编译时类型检查:允许开发者明确地为变量和函数等添加类型标注,在编译阶段进行类型检查,有助于提前发现类型不匹配的错误。
    • 类型推断:TypeScript 能够根据变量的初始值自动推断其类型,减少了开发者手动标注类型的工作量。
    • 类型擦除:在编译为 JavaScript 代码时,类型信息会被擦除,不影响最终的运行性能。
  • 接口(Interface):用于定义对象的结构和行为契约。它规定了对象应该具有哪些属性和方法,以及这些属性和方法的类型,有助于确保不同模块之间对象的一致性和规范性。
  • 枚举(Enum):可以创建一组具有名称的常量值,使得代码更具可读性和可维护性。例如,可以定义一周的天数或者颜色等枚举类型。
  • Mixin:一种将多个类的功能组合到一个类中的方式,增强了代码的复用性和灵活性。
  • 泛型编程(Generics):使函数和类能够在多种类型上工作,而不需要为每种类型单独编写代码,提高了代码的通用性和可重用性。
  • 名字空间(Namespace):用于组织和分组相关的代码,避免全局命名冲突,使代码结构更清晰。
  • 元组(Tuple):允许定义具有固定长度和不同类型元素的数组,提供了一种更灵活的数据结构。
  • Await:用于异步操作,使异步代码的编写更加简洁和直观,类似于同步代码的结构。

从 ECMA 2015 反向移植的功能:

  • 类(Class):提供了更清晰和面向对象的方式来定义和组织代码,包括属性、方法、构造函数等。
  • 模块(Module):更好地组织和封装代码,通过 import 和 export 关键字实现模块的导入和导出。
  • lambda 函数的箭头语法:使函数的定义更简洁,并且在处理 this 上下文时有更好的表现。
  • 可选参数以及默认参数:增加了函数定义的灵活性,使函数调用更方便。

TypeScript 和 JavaScript 的区别

TypeScript 是以JavaScript为基础构建的语言。
TypeScript 是 JavaScript 的超集:因此 JavaScript 语法是合法的 TypeScript ,TypeScript 和JavaScript 的运行时行为是相同的。

注意:TypeScript不能被 JavaScript 解析器直接执行,需要编译转换成 JavaScript 再执行。

  1. 类型系统
    • JavaScript:是动态类型语言,变量的类型在运行时确定。
    • TypeScript:具有静态类型系统,在编译时进行类型检查,能提前发现类型错误。
  2. 语法和特性
    • JavaScript:语法相对简单和灵活。
    • TypeScript:基于 JavaScript 语法扩展,增加了类、接口、枚举、泛型等特性,使代码更具结构化和可维护性。
  3. 代码提示和智能感知
    • JavaScript:在开发工具中的代码提示和智能感知相对较弱。
    • TypeScript:由于明确的类型定义,开发工具能提供更强大和准确的代码提示和自动完成。
  4. 项目规模和团队协作
    • JavaScript:对于小型项目可能足够,但在大型项目和团队协作中,代码的可读性和可维护性可能面临挑战。
    • TypeScript:更适合大型项目和团队开发,有助于保持代码的一致性和规范性。
  5. 学习曲线
    • JavaScript:相对较容易上手。
    • TypeScript:需要先理解类型系统和新增的特性,学习曲线略高,但对于有一定编程基础的开发者并非难以掌握。
  6. 运行环境
    • JavaScript:可以直接在浏览器和 Node.js 等环境中运行。
    • TypeScript:需要先编译为 JavaScript 代码,然后在支持 JavaScript 的环境中运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/389442.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSL VPN详细概述

为什么会出现SSL VPN呢?在这之前不是有IPSEC VPN吗? 通过这两个问题我们可以发现多半是IPSEC VPN在某些方面肯定有所欠缺,所以后面在出现了SSL VPN。 之前说过根据组网方式划分,可以分为 client to LAN 和 LAN to LAN 两种 而…

CTF学习笔记汇总(非常详细)零基础入门到精通,收藏这一篇就够了

CTF学习笔记汇总 Part.01 Web 01 SSRF 主要攻击方式如下: 01 对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息。 02 攻击运行在内网或本地的应用程序。 03 对内网Web应用进行指纹识别,识别企业内部的资产信息。 …

深入分析 Android ContentProvider (十二)

文章目录 深入分析 Android ContentProvider (十二)Android 中 ContentProvider 的系统代码分析(续)1. ContentProvider 的内部实现机制1.1. ContentProvider 的创建与生命周期管理1.2. ContentProvider 的数据访问与处理1.3. ContentProvider 的权限管理…

Go语言---sync.WaitGroup

在Go语言中,给我们提供了用于线程同步的sync.WaitGroup,简单来讲,WaitGroup就是指等待一组,等待一个系列执行完成后才会继续向下执行。 WaitGroup数据结构 type WaitGroup struct {noCopy noCopystate atomic.Uint64 // 高 32 b…

无人驾驶的未来:AI如何重塑我们的出行世界

无人驾驶汽车,作为人工智能(AI)技术的集大成者,正以前所未有的速度改变着我们的出行方式。从机器学习到计算机视觉,再到人工智能生成内容(AIGC),AI技术的每一次进步都在为无人驾驶汽…

华为手机连接电脑后电脑无反应、检测不到设备的解决方法

本文介绍华为手机与任意品牌电脑连接时,出现连接后电脑无反应、检测不到手机连接情况的解决方法。 最近,因为手机的存储空间愈发紧缺,所以希望在非华为电脑中,将华为手机内的照片、视频等大文件备份、整理一下。因此,需…

公司里的IT是什么?

公司里的IT是什么? 文章目录 公司里的IT是什么?1、公司里的IT2、IT技术3、IT行业4、IT行业常见证书 如果对你有帮助,就点赞收藏把!(。・ω・。)ノ♡ 前段时间,在公…

《Windows API每日一练》24.1 WinSock简介

本节将逐一介绍WinSock的主要特性和组件,套接字、WinSock动态库的使用。 本节必须掌握的知识点: Windows Socket接口简介 Windows Socket接口的使用 第178练:网络时间校验 24.1.1 Windows Socket接口简介 ■以下是WinSock的主要特性和组件…

实时转换,轻松编辑:2024年高效语音转文字解决方案

现在生活节奏越来越快了,很多时候一场会议内容的信息量就会呈几何式增长。用笔来记录肯定来不及,那还有一个方法就是录音或者录像。录制完成后我们可以使用语音转文字来快速获取会议内容是不是就方便了很多。 1.365在线转文字 链接传送:ww…

华为云依赖引入错误

问题:记录一次项目加载华为云依赖错误,如下: 错误信息:Could not find artifact com.huawei.storage:esdk-obs-java:pom:3.1.2.1 in bintray-qcloud-maven-repo (https://dl.bintray.com/qcloud/maven-repo/) 找到本地仓库&#…

【practise】string_atoi

今天来分享一道比较平常的练习题,说实话我自己写了半天,自己写的很烂最后还是看的答案… 1.题目概要 题目链接:LINK 2.题目难点 这个题目有两个难点,如下: 拿到了全部都是数字字符的字符串,怎么将这个…

从技术角度解读【与辉同行】文案(一)

视频文字内容 标题:走晋.山西 内容:将一段岁月熔成佳酿,三晋儿女荡气回肠。捧一把黄土架起火柴,华夏大地照亮火光。五千年黄土风云,历代千秋根固魂盈。三万顷汾河烟雨,唐风宋韵人杰地灵。当先辈手持石器抛挖…

秘密打造「AI陶哲轩」 震惊数学圈!谷歌IMO梦之队首曝光,菲尔兹奖得主深度点评

谷歌DeepMind正在做的,是要打造出世界上最强的AI数学家。 Perplexity AI的CEO对此做出了大胆预测——DeepMind继续研究下去的话,应该可以搞出一个「AI陶哲轩」了! 这个预测可谓相当大胆。 要知道,陶哲轩在IMO竞赛圈,乃…

ADI - 通过5 V至24 V输入提供双极性、双向DC-DC流入和流出电流

大部分电子系统都依赖于正电压轨或负电压轨,但是有些应用要求单电压轨同时为正负电压轨。在这种情况下,正电源或负电源由同一端子提供,也就是说,电源的输出电压可以在整个电压范围内调节,并且可以平稳转换极性。例如&a…

【CORS 报错】跨域请求问题:CORS 多种环境下的解决方案

🔥 个人主页:空白诗 文章目录 一、CORS错误的常见原因二、解决方案1. Vue3 Vite项目下的解决方案创建Vue3 Vite项目配置Vite的代理发送请求 2. jQuery项目下的解决方案使用CORS请求头使用JSONP 3. 其他环境下的解决方案使用服务器端代理设置CORS头使用…

“再来一单“业务功能开发

文章目录 概要整体架构流程技术细节小结 概要 再来一单”功能常见于餐饮、零售、外卖等行业,主要目的是为了简化用户的重复购买流程,提高用户体验和效率。 需求分析以及接口设计 再来一单就是将原订单中的商品重新加入到购物车中,所以本质上是"增…

java之WIFI信号模块

开发步骤分为以下几点&#xff1a; 1.在 AndroidManifest 中声明相关权限&#xff08;网络和文件读写权限&#xff09; 声明权限: <uses-permission android:name"android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name"android.…

matlab y=sin(x) - 2/π*(x)函数绘制

[TOC](matlab ysin(x) - 2/π*(x)函数绘制) ysin(x) - 2/π*(x) clc; clear; close all; x_axis_length 10; y_axis_length 10; % 创建 x 值向量 x_positive linspace(0.1, 10, 1000); % 正半轴上的 x 值 x_negative linspace(-10, -0.1, 1000); % 负半轴上的 x 值% 计算…

前端新手小白的React入坑指南

有个小伙伴跟我说&#xff0c;已经毕业了&#xff0c;开始实习了。但公司现在用的还是Vue&#xff0c;领导说是过段时间让他用React做项目&#xff0c;先自己学习起来。 我给他找了一些文档&#xff0c;顺便着呢&#xff0c;反正自己也写博客&#xff0c;自己也写一份吧&#x…

华为视觉智驾来了!买车千万不要乱选了

文 | AUTO芯球 作者 | 雷慢 华为又偷偷地憋大招了&#xff0c; 你们看&#xff0c;余承东昨天天悄咪咪地发了条微博宣布&#xff0c; 智界S7Pro版开始首发搭载华为视觉智驾方案&#xff0c; 也就是华为ADS基础版&#xff0c;车也陆续交给了车主们&#xff0c; 那问题来了&a…