TypeScript01 编译环境的搭建、字符串特性、类型特性
知识准备:JavaScript满足ES5前端规范、TypeScript满足ES6前端规范
1 TypeScript开发环境
TypeScript代码不能直接被浏览器识别,必须先转换成JS代码;通常是利用编译器来讲TS代码转换成JS代码
1.1 使用在线的编辑器
1.1.1 利用TypeScript官网提供的编译器
TypeScript官网地址:点击前往

TypeScript官网提供的在线编译器:点击前往

1.1.2 利用Babel官网提供的编译器
Babel官网地址:点击前往

Babel官网提供的在线编译器:点击前往

1.2 使用线下编译器01
前提:先安装node.js(比较简单,百度即可)
1.2.1 安装编译器
npm --version 查看node.js版本

npm install -g typescript 安装typescript (注意:安装typescript的过程就是安装编译器的过程,由于我已经安装过了,就不进行演示;如果不会的请参见我的博客【博客分类:开发基础】)
tsc --version 查看typescript版本 (注意:安装好typesript后就可以使用tsc命令啦)

1.2.2 编写TS文件
新建一个文件夹test,并在该文件夹下创建一个名为hello.ts的TS文件,在TS文件中编写TS代码

1.2.3 编译TS文件
利用tsc命令将TS文件编译成JS文件
打开命令窗口,就如到test文件夹下;使用命令 tsc hello.ts 就可以将TS文件编译成JS文件;编译完成后就会在test文件夹下面多出一个名为hello.js的文件

文件夹下多出的JS文件

1.3 使用线下编译器02
下载一个WebStorm编译器,下载完后进行安装;WebStorm编译器很强大,可以代码补全、错误提示、自动编译成JS文件
WebStorm官网:点击前往
WebStorm编译器界面

设置自动编译

2 字符串特性
2.1 多行字符串
直接将多行字符串放在单引号或者双引号内在TS中会报错,在JS中不会报错,但是运行JS时会报错

运行JS文件的错误提示为

使用单引号或者双引号将多行字符串拼接起来后虽然不会报错,但是拼接的效果就变成了一行字符串,而不是多行字符串啦

运行JS文件的结果为

将字符串内容放在单撇号里面后就可以任意换行啦

运行JS文件的结果为

2.2 字符串模板
字符串模板是放在单撇号里面的
var myName : string = "AJS";
var myAge: number = 18; console.log(`Hello, ${myName}. Your age is ${myAge}`);

运行JS文件的结果为

2.3 多行字符串和字符串模板组合使用
通过多行字符串和字符串模板来实现HTML代码的拼接
var myName : string = "AJS";
var myAge: number = 18; var str: string = `
<div>
<span>${myName}</span>
<span>${myAge}</span>
</div>
`; console.log(str);
编译成的JS代码如下
var myName = "AJS";
var myAge = 18;
var str = "\n <div>\n <span>" + myName + "</span>\n <span>" + myAge + "</span>\n </div>\n";
console.log(str);
运行JS文件的结果如下

2.4 自动拆分字符串
利用字符串模板去调用一个方法时字符串模板中表达式的值会自动赋给被调用的方法作为参数
var myName : string = "AJS";
function test(template, name, age) {
console.log(template);
console.log(name);
console.log(age);
}
function getAge() {
return 18;
}
// 利用字符串表达式调用test方法
// 注意:会将整个字符串模板作为一个变量传给test方法的第一个参数,将字符串模板中的第n个表达式传给test方法的第 n+1 个参数
test`Hello, my name is ${myName}. My age is ${getAge()}`;
编译成的JS代码如下
var myName = "AJS";
function test(template, name, age) {
console.log(template);
console.log(name);
console.log(age);
}
function getAge() {
return 18;
}
// 利用字符串表达式调用test方法
(_a = ["Hello, my name is ", ". My age is ", ""], _a.raw = ["Hello, my name is ", ". My age is ", ""], test(_a, myName, getAge()));
var _a;
运行JS代码的结果如下

3 类型特性
3.1 变量的类型
可以在定义变量的时候指定参数类型,如果制定了变量类型,那么给变量赋值的时候必须是匹配的类型
// 定义一个名为str的变量,变量类型为string类型,而且赋值为AJS
var str: string = "AJS";
console.log(str); // 修改变量的值
str = 'Hello World.'
console.log(str); // 修改变量的值时,如果类型不匹配就会报错;但是编译成的JS文件不会报错,而且还能正常运行,因为JS不会进行类型检查
str = 1234;
console.log(str);
编译成的JS代码如下
// 定义一个名为str的变量,变量类型为string类型,而且赋值为AJS
var str = "AJS";
console.log(str);
// 修改变量的值
str = 'Hello World.';
console.log(str);
// 修改变量的值时,如果类型不匹配就会报错;但是编译成的JS文件不会报错,而且还能正常运行,因为JS不会进行类型检查
str = 1234;
console.log(str);
运行的JS文件的结果为

如果我们在定义变量的时候没有指定变量类型,就会根据首次赋值来指定该变量的类型
// 定义一个名为v01的变量,但是没有指定变量的类型;这种情况就会根据首次给变量赋值时来指定该变量的类型
var v01 = "AJS";
console.log(v01); // 因为首次给变量v01赋值了一个字符串,所以v01变量的类型就是字符串类型啦
v01 = 123;
console.log(v01);
编译成的JS代码如下
// 定义一个名为v01的变量,但是没有指定变量的类型;这种情况就会根据首次给变量赋值时来指定该变量的类型
var v01 = "AJS";
console.log(v01);
// 因为首次给变量v01赋值了一个字符串,所以v01变量的类型就是字符串类型啦
v01 = 123;
console.log(v01);
运行JS文件的结果如下

如果我们在定义变量的时候指定变量的类型为any,那么该变量就可以被赋任意类型的值
// 定义一个名为v01的变量,并指定变量类型为任意类型
var v01 : any = "AJS";
console.log(v01); // 因为变量的类型为任意类型,所以可以赋任意类型的值
v01 = 123;
console.log(v01);
编译成的JS代码为
// 定义一个名为v01的变量,并指定变量类型为任意类型
var v01 = "AJS";
console.log(v01);
// 因为变量的类型为任意类型,所以可以赋任意类型的值
v01 = 123;
console.log(v01);
运行JS文件的结果为

3.2 方法的返回值类型
如果在定义方法是指定了返回值的类型,那么方法的返回值就必须是该指定类型的值,否则会报错;如果不指定,那么返回什么类型都可以
// 定义一个名为test的方法,方法的返回值类型为string类型,返回值必须是string类型的值否则会报错
function test(): string {
console.log("设置test方法的返回值类型为字符串类型。");
return "warrior";
}
注意:如果指定方法的返回值类型为void,那么在方法体中就不能使用return关键值指定返回值(即:该方法没有返回值)
3.3 方法的参数类型
定义方法时可以指定方法的参数类型,如果在调用方法时传入的参数类型不匹配就会报错
// 定义一个名为test的方法,方法的返回值类型为string类型;参数类型为string类型
function test(name : string) {
console.log("设置test方法的返回值类型为字符串类型。");
console.log("hello, " + name);
return "warrior";
} // 调用方法时参数类型必须匹配,否则会报错
var result = test("Fury");
console.log(result);
编译成的JS代码如下
// 定义一个名为test的方法,方法的返回值类型为string类型;参数类型为string类型
function test(name) {
console.log("设置test方法的返回值类型为字符串类型。");
console.log("hello, " + name);
return "warrior";
}
// 调用方法时参数类型必须匹配,否则会报错
var result = test("Fury");
console.log(result);
运行JS文件的结果如下

3.4 参数类型详解
3.4.1 默认的参数类型
待更新...2017年8月1日10:53:31
可以自己查看typescript的文档
3.4.2 自定义类型
// 自定类型:就是定义一个类(和Java一样)
class Person {
name: string;
age: number;
} // 定义一个变量p01,变量类型为Persone类型
var p01 = new Person();
p01.name = "Fury";
p01.age = 18;
console.log(p01);
编译成的JS代码为
// 自定类型:就是定义一个类(和Java一样)
var Person = (function () {
function Person() {
}
return Person;
}());
// 定义一个变量p01,变量类型为Persone类型
var p01 = new Person();
p01.name = "Fury";
p01.age = 18;
console.log(p01);
运行JS文件的结果为

未完待续...2017年8月1日11:00:33
TypeScript01 编译环境的搭建、字符串特性、类型特性的更多相关文章
- swift 声明特性 类型特性
原文地址:http://www.cocoachina.com/newbie/basic/2014/0612/8801.html 特性提供了关于声明和类型的很多其它信息.在Swift中有两类特性,用于修 ...
- Java编译环境的搭建(eclipse)
每用一种语言开发,要搭建其编译和开发环境,我们废话不说,立刻来看看Java开发环境的搭建. 1.安装JDK和JRE Windows环境下: a.去Oracle官网下载对应版本的JDK安装包,http: ...
- 第一篇:《UNIX 网络编程 第二版》编译环境的搭建
第一步:搭建基本的编译环境 安装gcc, g++, bulid-essential等编译软件 第二步:下载本书示例源码包 第三步:解压下载到的包并放在用户主目录中 第四步:进入包内并执行以下命令 su ...
- 第一篇:《UNIX 环境高级编程》编译环境的搭建
第一步:搭建基本的编译环境 安装gcc, g++, bulid-essential等编译软件 第二步:下载本书示例源码包 可在这里下载 www.apuenook.com 第三步:解压下载到的包并放在用 ...
- 《UNIX 环境高级编程》编译环境的搭建( 运行本专栏代码必读 )
第一步:搭建基本的编译环境 安装gcc, g++, bulid-essential等编译软件 第二步:下载本书示例源码包 可在这里下载 www.apuenook.com 第三步:解压下载到的包并放在用 ...
- 《UNIX 网络编程 第二版》编译环境的搭建( 运行本专栏代码必读 )
第一步:搭建基本的编译环境 安装gcc, g++, bulid-essential等编译软件 第二步:下载本书示例源码包 可在这里下载http://ishare.iask.sina.com.cn/f/ ...
- WebAssembly学习(二):Windows10下WebAssembly C/C++编译环境的搭建与Hello World尝试
首先,不论是在Windows.Linux还是Mac上,Webassembly的编译都是主要依赖于Emscripten SDK这个工具的.但是,在这里必须要吐槽一下,不论是WebAssembly官网.W ...
- 【Linux编译环境的搭建】Linux都没有,怎么学Linux编程?
本文准备从0开始,一步步搭建一套属于自己的多节点Linux系统环境,这将是后续学Linux.用Linux.Linux环境编程.应用和项目部署.工具实验等一系列学习和实践的基石,希望对小伙伴们有帮助. ...
- Windows下QT4.8.4编译环境的搭建(转载http://blog.csdn.net/bestgonghuibin/article/details/38933141)
开始使用QT了,所以第一步就是把环境搭起来,这里小记一下,以免以后忘记. 1. 下载安装文件 要使用QT功能,那么必须要下载QT的源码,还必须要一个是用QT的编译环境,可以是VS2010,也可以是专用 ...
随机推荐
- VMware厚置备延迟置零,厚置备置零,精简置备详解
1.厚置备延迟置零(zeroed thick) 以默认的厚格式创建虚拟磁盘.创建过程中为虚拟磁盘分配所需空间.创建时不会擦除物理设备上保留的任何数据,但是以后从虚拟机首次执行写操作时会按需要将其置零. ...
- Linux初始化脚本
以下脚本用于linux系统的初始化脚本,可以在服务器系统安装完毕之后立即执行.脚本结合各位大牛一些参数,已经在CentOS 5下通过. 使用方法:将其复制,保存为一个shell文件,比如init.sh ...
- 在laravel5.8中集成swoole组件----用协程实现的服务端和客户端(二)---静态文件如何部署
目前,较为成熟的技术是采用laravelS组件,注意和laravel 区别laravelS多了一个大写的S,由于laravelS默认监听5200端口,所以laravel项目要做一些调整 例如: 静态文 ...
- html5shiv主要解决IE6-8 无法识别HTML5的新标签,父节点不能包裹子元素,以及应用CSS样式
html5shivehtml5shiv主要IE6-8解决:1,HTML5提出的新的元素不被IE6-8识别.2,这些新元素不能作为父节点包裹子元素,3,并且不能应用CSS样式.让CSS 样式应用在未知元 ...
- Go中&和*的区别
& 返回变量的内存地址 * 返回变量的值, * 只能作用在指针上 package main import "fmt" func main() { var a = 5 var ...
- Pycharm下将py文件打包成exe文件
1. 在PyCharm下安装PyInstaller 1. 首先,打开自己要发布的工程 2. 点击底部的[Terminal]打开终端,中输入命令pip install pyinstaller后回车, ...
- wgs84 转百度经纬度坐标
/** * wgs84 转百度地图坐标 * @param $lng * @param $lat * @return array */ function toBaiduLocation($lng,$la ...
- python中with语句的使用
引言 with 语句是从 Python 2.5 开始引入的一种与异常处理相关的功能(2.5 版本中要通过 from __future__ import with_statement 导入后才可以使用) ...
- Leetcode题目198.打家劫舍(动态规划-简单)
题目描述: 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给 ...
- centos7搭建hadoop-2.7.3,zookeeper-3.4.6,hbase-1.2.5(root用户)
环境:[centos7.hadoop-2.7.3.zookeeper-3.4.6.hbase-1.2.5] 两个节点:[主节点,主机名为Master,用户为root:从节点,主机名为Slave,用户为 ...