一、学习TypeScript的缘由

当前编写前端的逻辑的主流语言仍是JavaScript,但这个语言由于其弱类型的特性使得它在很多的方面给程序员带来了许多的困扰,例如在使用IDE时,IDE往往难以推断出变量的类型,无法提供代码补全和错误提示,此外JavaScript对面向对象的支持也比较弱,算是一种比较非常勉强的实现方式,这也导致使用JavaScript编写项目时到后期变得难以维护等等。因此学习TypeScript是非常有必要,也是符合未来前端的发展趋势的。

二、学习环境的搭建

1. TypeScript的编译环境

使用以下指令进行安装(需要有node.js环境):

npm install -g typescript

然后输入下面的指令可查看当前的版本:

> tsc -v
Version 4.3.5

2. vscode自动编译的配置

我使用的学习环境是 vscode ,先创建一个项目文件夹,然后输入(先cd到该文件夹中):

tsc --init

然后系统会给我们生成一个 tsconfig.json 的文件。

然后我们只需要将它的 outDir 的值设置为 "./js"即可:

然后我们先新建一个index.ts的文件,先编写一小段ts代码:

let str: string = "你好ts"
let str1: string = "你好str1"

然后点击:终端 》 运行任务 》typescript 》tsc监视 即可

这样我们每次保存 ts 代码时,它就会被自动编译成 js 代码了。

编译出的 js 代码:

"use strict";
var str = "你好ts";
var str1 = "你好str1";

当然,除此之外我们也可以使用以下指令手动编译 ts 文件:

tsc xxx.ts

三、TypeScript中的数据类型

  • 布尔类型 boolean
  • 数字类型 number
  • 字符串类型 string
  • 数组类型 array
  • 元祖类型 tuple
  • 枚举类型 enum
  • 任意类型 any
  • nullundefined
  • void 类型
  • never 类型

tips: 在TypeScript中定义变量时必须为变量表明变量的类型

1. 简单变量的定义和初始化

这里以 booleannumber 为例:

var flag: boolean = true
var a: number = 123

而当我们试图把一个其他类型赋值给一个数字类型的变量时会报错,例如:

2. 复杂变量的定义和初始化

数组类型

写法一:

let 数组变量名: 元素变量类型[] = [xxx, ...]

例如:

let arr: number[] = [1,2,3]

这种方式和Java的写法非常类似。

写法二:

let 数组变量名: Array<> = [xxx, ...]

例如:

let arr2: Array<string> = ["123","haha"];

写法三:

let 数组变量名: any[] = [xxx, ...]

这样数组就退化为了 js 中的可以装载任意类型元素的数组了。

元组类型

TypeScript中元组类型属于数组的一种,可以指定每个元素的类型:

let 元组变量名:[类型一, 类型二, 类型三...]=[类型一变量, 类型二变量, 类型三变量...]

具体例子:

let oneTuple:[string, number, boolean] = ["ts",15.2,false];

枚举类型

语法:

enum 枚举类型名 {
变量1 [=xxx],
变量2 [=xxx]...
}

例如:

enum Flag {
SUCCESS = 1,
ERROR = -1
}

若不为枚举变量赋值,则它的默认值为索引值(从1开始)

enum Color {
RED, BLUE, GREEN
}
let computerColor: Color = Color.BLUE
console.log(computerColor);

运行结果:

3. 其他变量类型

任意类型

任意类型和es5中没有指定类型相似,即一个变量可以使用任意的类型进行赋值。

语法:

let 变量名: any = 任意类型值;

示例:

let foo: any = 123;
foo = "hello world";
foo = false;

undefined类型

当一个变量声明而没有初始化赋值时,它的类型为undefined

我们可以使用一个多类型运算符 | 来表示一个变量可以有多个类型:

let num: number|undefined;
console.log("num=",num);

void类型

一般用于标明方法没有返回值,用法同 Javac++ 等的 void

function run(): void {
console.log("hello world");
}

TypeScript学习笔记(一)环境搭建和数据类型的更多相关文章

  1. Android Studio 学习笔记(一)环境搭建、文件目录等相关说明

    Android Studio 学习笔记(一)环境搭建.文件目录等相关说明 引入 对APP开发而言,Android和iOS是两大主流开发平台,其中区别在于 Android用java语言,用Android ...

  2. 我的Java学习笔记 -开发环境搭建

    开始学习Java~ 一.Java简介 Java编程语言是一种简单.面向对象.分布式.解释型.健壮安全.与系统无关.可移植.高性能.多线程和动态的语言. Java分为三个体系: JavaSE(J2SE) ...

  3. Django学习笔记 开发环境搭建

    为什么使用django?1.支持快速开发:用python开发:数据库ORM系统,并不需要我们手动地构造SQL语句,而是用python的对象访问数据库,能够提升开发效率.2.大量内置应用:后台管理系统a ...

  4. cocos2d-x lua 学习笔记(1) -- 环境搭建

    Cocos2d-x 3.0以上版本的环境搭建和之前的Cocos2d-x 2.0 版差异较大的,同时从Cocos2d-x 3.0项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭建一次之后, ...

  5. SpringData JPA的学习笔记之环境搭建

    一.环境搭建 1.加入jar包   spring jar+jpa jar +springData jar >>SpringData jar包     2.配置applicationCont ...

  6. Mybatis学习笔记之---环境搭建与入门

    Mybatis环境搭建与入门 (一)环境搭建 (1)第一步:创建maven工程并导入jar包 <dependencies> <dependency> <groupId&g ...

  7. 前端框架vue学习笔记:环境搭建

    兼容性 不兼容IE8以下 Vue Devtools 能够更好的对界面进行审查和调试 环境搭建 1.nodejs(新版本的集成了npm)[npm是node包管理 node package manager ...

  8. Web安全测试学习笔记 - vulhub环境搭建

    Vulhub和DVWA一样,也是开源漏洞靶场,地址:https://github.com/vulhub/vulhub 环境搭建过程如下: 1. 下载和安装Ubuntu 16.04镜像,镜像地址:htt ...

  9. 【Django学习笔记】-环境搭建

    对于初学django新手,根据以下步骤可以快速进行Django环境搭建 虚拟环境创建 使用virtualenv创建并启用虚拟机环境 ,关于virtualenv可参考https://www.yuque. ...

  10. go 学习笔记之环境搭建

    千里之行始于足下,开始 Go 语言学习之旅前,首先要搭建好本地开发环境,然后就可以放心大胆瞎折腾了. Go 的环境安装和其他语言安装没什么特别注意之处,下载安装包下一步下一步直到完成,可能唯一需要注意 ...

随机推荐

  1. Unity3D学习笔记2——绘制一个带纹理的面

    目录 1. 概述 2. 详论 2.1. 网格(Mesh) 2.1.1. 顶点 2.1.2. 顶点索引 2.2. 材质(Material) 2.2.1. 创建材质 2.2.2. 使用材质 2.3. 光照 ...

  2. To_Heart—题解——AT2165

    这是一篇解题报告 首先,看到标签,考虑二分答案. 我们二分答案(即塔顶的值),把大于或等于这个值的变为1,否则变为0. 很容易发现,如果塔顶的答案是1,那么就说明值可以更大,否则相反. 复制一波样例 ...

  3. 信奥赛一本通1573:分离与合体C++分离与合体

    题目链接 #include<cstdio> #include<algorithm> using namespace std; int dp[305][305]={},jojo[ ...

  4. POJ 3026 Borg Maze 广搜(BFS)+最小生成树

    题意:从S出发,去抓每一个A,求总路径最短长度.在S点和A点人可以分身成2人,不过一次只能让一个人走. 思路是先利用BFS求出各点之间的距离,建成图,再套用最小生成树模板. 一次性A了.不过觉得在判断 ...

  5. SpringBoot集成Quartz实现定时器

    SpringBoot+Quartz实现定时器,由于本人也是刚学习,不足之处请各位大神指正 .. 1.pom配置   <dependency>   <groupId>org.sp ...

  6. mqtt 集成

    -- 在pom.xml导入依赖 <!-- mqtt --> <dependency> <groupId>org.springframework.boot</g ...

  7. Java | Random 和 Math 的概述及使用

    Random Random类是java.util的包里面提供的我们常用的API,方便我们操作的,还有非常多像Random一样的类. Random的作用 生成一个随机数字,可以指定范围,也可以真的随机. ...

  8. java基础---枚举类与注解

    一.枚举类 类的对象只有有限个,确定的.我们称此类为枚举类 如果枚举类中只有一个对象,则可以作为单例模式的实现方式. 定义枚举类 方式一:jdk5.0之前,自定义枚举类 public class Se ...

  9. 家庭账本开发day10

    系统的增删改查基本功能完成,进行业务流程完整测试.完善相关功能,编写搜索 功能,通过日期,类型等关键字进行搜索,对搜索到的数据表格完成重载 // 监听搜索操作        form.on('subm ...

  10. 微信小程序云开发-数据库-商品列表数据显示N条数据

    一.wxml文件 在wxml文件中,写页面和点击事件,添加绑定事件limitGoods  二.js文件 在js文件中写limitGoods(),使用.limit(3)表示只显示3条数据