TypeScript学习笔记(一)环境搭建和数据类型
一、学习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 null和undefinedvoid类型never类型
tips: 在TypeScript中定义变量时必须为变量表明变量的类型
1. 简单变量的定义和初始化
这里以 boolean 和 number 为例:
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类型
一般用于标明方法没有返回值,用法同 Java 和 c++ 等的 void:
function run(): void {
console.log("hello world");
}
TypeScript学习笔记(一)环境搭建和数据类型的更多相关文章
- Android Studio 学习笔记(一)环境搭建、文件目录等相关说明
Android Studio 学习笔记(一)环境搭建.文件目录等相关说明 引入 对APP开发而言,Android和iOS是两大主流开发平台,其中区别在于 Android用java语言,用Android ...
- 我的Java学习笔记 -开发环境搭建
开始学习Java~ 一.Java简介 Java编程语言是一种简单.面向对象.分布式.解释型.健壮安全.与系统无关.可移植.高性能.多线程和动态的语言. Java分为三个体系: JavaSE(J2SE) ...
- Django学习笔记 开发环境搭建
为什么使用django?1.支持快速开发:用python开发:数据库ORM系统,并不需要我们手动地构造SQL语句,而是用python的对象访问数据库,能够提升开发效率.2.大量内置应用:后台管理系统a ...
- cocos2d-x lua 学习笔记(1) -- 环境搭建
Cocos2d-x 3.0以上版本的环境搭建和之前的Cocos2d-x 2.0 版差异较大的,同时从Cocos2d-x 3.0项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭建一次之后, ...
- SpringData JPA的学习笔记之环境搭建
一.环境搭建 1.加入jar包 spring jar+jpa jar +springData jar >>SpringData jar包 2.配置applicationCont ...
- Mybatis学习笔记之---环境搭建与入门
Mybatis环境搭建与入门 (一)环境搭建 (1)第一步:创建maven工程并导入jar包 <dependencies> <dependency> <groupId&g ...
- 前端框架vue学习笔记:环境搭建
兼容性 不兼容IE8以下 Vue Devtools 能够更好的对界面进行审查和调试 环境搭建 1.nodejs(新版本的集成了npm)[npm是node包管理 node package manager ...
- Web安全测试学习笔记 - vulhub环境搭建
Vulhub和DVWA一样,也是开源漏洞靶场,地址:https://github.com/vulhub/vulhub 环境搭建过程如下: 1. 下载和安装Ubuntu 16.04镜像,镜像地址:htt ...
- 【Django学习笔记】-环境搭建
对于初学django新手,根据以下步骤可以快速进行Django环境搭建 虚拟环境创建 使用virtualenv创建并启用虚拟机环境 ,关于virtualenv可参考https://www.yuque. ...
- go 学习笔记之环境搭建
千里之行始于足下,开始 Go 语言学习之旅前,首先要搭建好本地开发环境,然后就可以放心大胆瞎折腾了. Go 的环境安装和其他语言安装没什么特别注意之处,下载安装包下一步下一步直到完成,可能唯一需要注意 ...
随机推荐
- 每日三道面试题,通往自由的道路6——JVM
茫茫人海千千万万,感谢这一秒你看到这里.希望我的面试题系列能对你的有所帮助!共勉! 愿你在未来的日子,保持热爱,奔赴山海! 每日三道面试题,成就更好自我 今天我们继续聊聊JVM的话题吧! 1. 那你知 ...
- 8、inotify和resync的优缺点
只有对外提供访问的服务需要有端口号,本地服务无端口号: 8.1.inotify的优缺点: 1.优点: 监控文件系统事件变化,通过同步工具实现实时的数据同步 2.缺点: 并发如果大于200个文件(10- ...
- 3、dns服务搭建
3.1.dns服务简介: 1.DNS(Domain Name System)域名系统. 目前提供网络服务的应用使用唯一的32位的IP地址来标识,但是由于数字比较复杂.难以记忆,因此产生了域名系统(DN ...
- 2、mysql编译安装
2.1前言: 此文档介绍的是cmake编译安装的方式: 二进制的安装方式在linux运维_集群_01中有详细的安装说明(已经编译完成,进行初始操作即可) 初始化操作时需要对编译好的mysql进行一下备 ...
- 收集雪花(map)
题目描述 不同的雪花往往有不同的形状.在北方的同学想将雪花收集起来,作为礼物送给在南方的同学们.一共有n个时刻,给出每个时刻下落雪花的形状,用不同的整数表示不同的形状.在收集的过程中,同学们不希望有重 ...
- 二叉搜索树(Binary Search Tree)(Java实现)
@ 目录 1.二叉搜索树 1.1. 基本概念 1.2.树的节点(BinaryNode) 1.3.构造器和成员变量 1.3.公共方法(public method) 1.4.比较函数 1.5.contai ...
- NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务
业精于勤,荒于嬉:行成于思,毁于随. 一.MongoDB服务下载安装(windows环境安装) 1.进入官网:https://www.mongodb.com/,点击右上角的 Try Free , 2 ...
- css 背景图片铺满
body { width: 100%; height: 100%; background: url(img/loginbg.png); background-size: 100% 100%; back ...
- 关于mysql集群主从服务器搭建
在高并发流量下,数据库往往是服务端的瓶颈,由于数据库数据需要确保落地,同时保证数据同步,数据即时性,有效性的问题,导致数据库不能像平常后端程序一样负载均衡. 那么在大并发下,该如何缓解数据库的压力呢? ...
- spring集成flyway
最近给公司项目集成flyway,由于我们项目移动端使用的是spring框架,网上看了很多博客,感觉这方面的东西还是很少的,毕竟现在是springboot的天下,大多数都是springboot集成fly ...