一、学习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. 项目启动报错:Redis health check failed

    最近是重新开发整个项目,在上线测试的时候发现这个问题. 项目环境:SpringBoot2.x+Consul+Redission+Maven 报错的信息如下: o.s.b.a.redis.RedisHe ...

  2. 写DockerFile的一些技巧

    Docker镜像由只读层组成,每个层都代表一个Dockerfile指令.这些层是堆叠的,每一层都是前一层变化的增量.示例Dockerfile: ​ FROM ubuntu:15.04 COPY . / ...

  3. 精尽Spring Boot源码分析 - Jar 包的启动实现

    该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Sprin ...

  4. js(if else)分数等级查询

    <!DOCTYPE html><html><head><meta charset="utf-8"><title>文档标题 ...

  5. .NET 云原生架构师训练营(设计原则与模式)--学习笔记

    在复杂系统的架构设计中引入设计原则与模式,能够极大降低复杂系统开发.和维护的成本 目录 几个问题 为什么要学习设计模式 优良架构设计的具体指标 理解复杂系统 面向对象思想(指导复杂系统的分析.设计.实 ...

  6. 『心善渊』Selenium3.0基础 — 15、Selenium对多窗口的操作

    目录 1.多标签/多窗口之间的切换 2.句柄练习 1.多标签/多窗口之间的切换 (1)多标签/多窗口场景: 在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要切换到新打开的窗口上进行操作,如 ...

  7. uniapp uni.navigateTo 传值传对象

    uni.navigateTo({ url: '/pages/details?obj='+ encodeURIComponent(JSON.stringify(item)) }); 接收: onLoad ...

  8. 删除有序数组中的重复项II

    题目描述 给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素最多出现两次,返回删除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组 并在使用O(1)额外空间的条件下 ...

  9. Docker:部署PXC8.0集群时,启动容器报错New joining cluster node didn‘t find all needed SSL artifacts

    使用docker部署mysql PXC集群8.0版本,启动第二个节点的时候遇到报错,New joining cluster node didn't find all needed SSL artifa ...

  10. java:替换List集合中的某个任意值(对象)

    定义replaceAll方法,将传入的新值替换集合中的老值(list,old,new) private static <E> void replaceAll(List<E> l ...