TypeScript语言基础

一、什么是TypeScript

编程语言包括动态类型语言和静态类型语言。动态类型语言是指在程序运行阶段才检查变量数据类型的语言,在定义变量时不需要指定变量的数据类型,通常在编译时不容易发现错误,因此前端开发工具发明了一些检查插件,比如eslint等,用于在编译时根据一定的规则检查数据类型,避免一些错误;反之静态类型语言是在编译阶段就确定变量数据类型的语言,在编译时编译器就会检查错误,比如Java、C#等。

TypeScript可理解成Type+javaScript,理解为可扩展的JavaScript(参考Javascript基础),既保留了JavaScript动态类型的特点,也集成了静态类型的特点。TypeScript可以使用JavaScript中的所有代码和编码概念,TypeScript与JavaScript相比,进步的地方包括:加入注释,让编译器理解所支持的对象和函数,编译器会移除注释,不会增加开销;增加一个完整的类结构,使之成为一个全新的面向对象语言,适用于大型的开发项目。

二、JavaScript 和 TypeScript 的主要差异

1、TypeScript 可以使用 JavaScript 中的所有代码和编码概念,TypeScript 是为了使 JavaScript 的开发变得更加容易而创建的。

2、TypeScript 从核心语言方面和类概念的模塑方面对 JavaScript 对象模型进行扩展。

3、JavaScript 代码可以在无需任何修改的情况下与 TypeScript 一同工作,同时可以使用编译器将 TypeScript 代码转换为 JavaScript。

4、TypeScript 通过类型注解提供编译时的静态类型检查。

5、TypeScript 中的数据要求带有明确的类型,JavaScript不要求。

6、TypeScript 为函数提供了缺省参数值。

7、TypeScript 引入了 JavaScript 中没有的”类”概念。

8、TypeScript 中引入了模块的概念,可以把声明、数据、函数和类封装在模块中。

三、安装和使用TypeScript

首先需要安装nodejs环境,然后执行” npm install -g typescript “就可以全局安装Typescript,编写完成.ts文件后,可以通过编译命令” tsc .ts “将TypeScript编写的ts代码转换为*.js代码。目前最流行的IED工具是vsCode,它对typeScript具有很好的支持。本章节只介绍基本用法,不对具体概念做深入探究。

四、变量定义

五、函数定义

六、类的定义

七、类和接口的配合

八、枚举类

九、泛型

十、类型别名+字面量+交叉类型

十一、内置数据类型

十二、声明文件

在编写项目的时候,我们通常需要使用一些第三方的库文件,这些库文件不是通过typeScript写的,如果直接在ts文件中引用和使用它的类型会报无法识别的编译错误。这时我们可以使用关键字 declare 来为这些类型做声明,手动创建声明的语法如下:

  • declare var 声明全局变量
  • declare function 声明全局方法
  • declare class 声明全局类
  • declare enum 声明全局枚举类型
  • declare namespace 声明(含有子属性的)全局对象
  • interfacetype 声明全局类型
  • export 导出变量
  • export namespace 导出(含有子属性的)对象
  • export default ES6 默认导出
  • export = commonjs 导出模块
  • export as namespace UMD 库声明全局变量
  • declare global 扩展全局变量
  • declare module 扩展模块
  • /// <reference></reference> 三斜线指令

假如我们想使用第三方库 jQuery,一种常见的方式是在 html 中通过 <script></code> 标签引入 jQuery,然后就可以使用全局变量 <code>$</code> 或 <code>jQuery</code> 了。但是在 ts 中,编译器并不知道 <code>$</code> 或 <code>jQuery</code> 是什么,我们需要使用 <code>declare var</code> 来定义它的类型。</p><p>通常我们会把以上声明语句放到一个单独的文件(比如<code>jQuery.d.ts</code>)中,可以在项目全局使用,这个d.ts类型的文件就是声明文件。</p><p>通常我们使用的第三方库,它的官方或者社区都已经为我们编写好了声明文件(如果没有则需要手动编写),不需要我们亲自编写,比如在vue项目中使用 install 安装库时,会在node_modules对应的文件夹下找到它的声明文件。</p></script>

Original: https://www.cnblogs.com/zqhIndex/p/16468319.html
Author: 我若安好,便是晴天
Title: TypeScript语言基础

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/612381/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 异步线程里的日志不好追踪?小支一招,轻松搞定!

    众所周知,通过唯一的链路id来追踪一次请求的所有日志,对于排查生产问题来说,会是非常给力的。这个比较容易实现。我之前的博客也有多次提及 ▄︻┻┳═一 https://www.cnb…

    数据库 2023年6月9日
    089
  • 计算机组成原理——概述篇

    计算机发展历史 电子管计算机(1946 年——1958 年) 第一台计算机为ENIAC 诞生于美国宾夕法尼亚大学 特点: 集成度小,空间占用大 功耗高,运行速度慢 操作复杂,更换程…

    数据库 2023年6月16日
    062
  • 工具 | 常用 MySQL 内核 Debug 技巧

    作者:柯煜昌 顾问软件工程师目前从事 RadonDB MySQL 容器化研发,华中科技大学研究生毕业,有多年的数据库内核开发经验。 掌握 MySQL 内核源码的阅读和调试能力,不仅…

    数据库 2023年5月24日
    0111
  • Golang异常处理

    从error的定义说起 type error interface { Error() string } Go 的error类型是一个接口。在Go中,只要实现了接口约定的方法,就等同…

    数据库 2023年6月16日
    084
  • jenkins

    jenkins 1.简介 1.1 SVN介绍 1.2 Maven介绍 1.3 Ant介绍 1.4 Gradle介绍 1.5 jenkins工作原理 1.6 jenkins特点 2….

    数据库 2023年6月14日
    059
  • 并发编程学习

    Semaphore Semaphore 可以允许多个线程访问一个临界区。 应用:实现线程池 CountDownLatch 应用: 业务原始状态:一个线程执行查询订单,查询派送单,对…

    数据库 2023年6月16日
    095
  • Docker Mysql安装和启动

    1、拉取mysql镜像 前往docker官网dockerhub在这里插入图片描述可以在红框内选择指定版本,例如 <span class=”token function”&gt…

    数据库 2023年6月6日
    080
  • 达梦数据库_DM8配置MPP主备

    为了提高MPP系统可靠性,克服由于单节点故障导致整个系统不能继续正常工作,DM 在普通的MPP系统基础上,引入主备守护机制,将MPP节点作为主库节点,增加备库作为备份节点,必要时可…

    数据库 2023年6月11日
    092
  • typora最后的免费版本

    需要的阿里云盘自取 「typora最后的免费版本」https://www.aliyundrive.com/s/p3Ci2gbgwYh点击链接保存,或者复制本段内容,打开「阿里云盘」…

    数据库 2023年6月6日
    080
  • Kmp算法

    算法流程: kmp_search(char[] text,char[] pattern) 构建前缀表 prefix[0]&#x9ED8;&#x8BA4;&#…

    数据库 2023年6月11日
    0117
  • 2022-8-17 mysql 第三天

    子查询 按照结果集的行列数不同,子查询可以分为以下几类: 标量子查询:结果集只有一行一列(单行子查询) 列子查询:结果集有一列多行 行子查询:结果集有一行多列 表子查询:结果集多行…

    数据库 2023年6月14日
    076
  • 数据库概述

    MySQL的启动、停止 启动: net start mysql80 停止: net stop mysql80 (PS:mysql80为Win注册到MySQL中的系统服务名称)* M…

    数据库 2023年6月16日
    0122
  • SQL与数据库编程学习笔记-day1

    一:理论知识参考 学习网站参考: 数据库主要分为两类: 1.关系型数据库:关系型数据库采用表格的储存方式,数据以行和列的方式进行存储,要读取和查询都十分方便,例如常见的:Oracl…

    数据库 2023年6月9日
    082
  • leetcode 538. Convert BST to Greater Tree 把二叉搜索树转换为累加树(简单)

    一、题目大意 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node…

    数据库 2023年6月16日
    086
  • Spring(三)-AOP

    1、名词理解 切面(Aspect): 含有前置通知,后置通知,返回通知,异常抛出通知,环绕通知等方法的 类; 通知(Advice): 对原方法进行添加处理(如日志等)的 方法; 切…

    数据库 2023年6月16日
    079
  • Mybatis-Plus json 格式数据查询

    // List 存储 json 格式后的查询 .apply("JSON_CONTAINS(JSON_EXTRACT(order_id_list, ‘$.data[*]’)…

    数据库 2023年6月6日
    0269
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球