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,也可以是专用 ...
随机推荐
- redis.conf 文件解释
# Redis示例配置文件 # 注意单位问题:当需要设置内存大小的时候,可以使用类似1k.5GB.4M这样的常见格式: # # 1k => 1000 bytes # 1kb => 1024 ...
- confluence配置搭建
1.环境准备:需要安装jdk.需要mysql5.7数据库,创建数据库confluence并创建用户和密码 CREATE DATABASE `confluence` DEFAULT CHARACTER ...
- 用jquery实现Ping测试网络连接性
jquery的ping插件://要用的需要明白代码及自己改些地方 (function($) { $.fn.ping = function(options) { var opts = ...
- oracle之约束-主键、非空、唯一、check、外键、默认
--首先添加主键约束alter table studentadd constraint PK_student_sno primary key(sno) --删除约束alter table studen ...
- 跟hzwer学分块!?
orz hzwer.分块啥的真是太强了- (块状链表也真是太强了-) Upd:Upd:Upd: 好像链接时不时会炸?这个时候就体现了转载的作用 如果上面链接用不了就戳这里
- [ERROR ] The Salt Master has cached the public key for this node, this salt minion will wait for 10 seconds before attempting to re-authenticate
2.salt master已缓存此节点的公钥,此salt minion将等待10秒,然后再尝试重新验证. [ERROR ] The Salt Master has cached the public ...
- ttf-mscorefonts-installer 无法安装,解决办法
ttf-mscorefonts-installer 无法安装,解决办法 原 lieefu 发布于 2017/01/11 08:11 字数 163 阅读 1007 收藏 0 点赞 0 评论 0 面试:你 ...
- 逻辑回归原理 面试 Logistic Regression
逻辑回归是假设数据服从独立且服从伯努利分布,多用于二分类场景,应用极大似然估计构造损失函数,并使用梯度下降法对参数进行估计.
- Codeforces Round #371 (Div. 2)
之前做过E题,是一个DP. A题,水题,两线段求交集. B题,set一下判断即可. C题,水题.但是我写麻烦了,直接转化成二进制再做,比用字符串relize()以后再map要好写得多. D题,交互题, ...
- IntelliJ IDEA利用Maven下载所需的JAR包到项目中
直接复制JetBrains/../conf/settings.xml后修改镜像出现问题,然后用了这里的settings.xml配置文件.