知识准备: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 编译环境的搭建、字符串特性、类型特性的更多相关文章

  1. swift 声明特性 类型特性

    原文地址:http://www.cocoachina.com/newbie/basic/2014/0612/8801.html 特性提供了关于声明和类型的很多其它信息.在Swift中有两类特性,用于修 ...

  2. Java编译环境的搭建(eclipse)

    每用一种语言开发,要搭建其编译和开发环境,我们废话不说,立刻来看看Java开发环境的搭建. 1.安装JDK和JRE Windows环境下: a.去Oracle官网下载对应版本的JDK安装包,http: ...

  3. 第一篇:《UNIX 网络编程 第二版》编译环境的搭建

    第一步:搭建基本的编译环境 安装gcc, g++, bulid-essential等编译软件 第二步:下载本书示例源码包 第三步:解压下载到的包并放在用户主目录中 第四步:进入包内并执行以下命令 su ...

  4. 第一篇:《UNIX 环境高级编程》编译环境的搭建

    第一步:搭建基本的编译环境 安装gcc, g++, bulid-essential等编译软件 第二步:下载本书示例源码包 可在这里下载 www.apuenook.com 第三步:解压下载到的包并放在用 ...

  5. 《UNIX 环境高级编程》编译环境的搭建( 运行本专栏代码必读 )

    第一步:搭建基本的编译环境 安装gcc, g++, bulid-essential等编译软件 第二步:下载本书示例源码包 可在这里下载 www.apuenook.com 第三步:解压下载到的包并放在用 ...

  6. 《UNIX 网络编程 第二版》编译环境的搭建( 运行本专栏代码必读 )

    第一步:搭建基本的编译环境 安装gcc, g++, bulid-essential等编译软件 第二步:下载本书示例源码包 可在这里下载http://ishare.iask.sina.com.cn/f/ ...

  7. WebAssembly学习(二):Windows10下WebAssembly C/C++编译环境的搭建与Hello World尝试

    首先,不论是在Windows.Linux还是Mac上,Webassembly的编译都是主要依赖于Emscripten SDK这个工具的.但是,在这里必须要吐槽一下,不论是WebAssembly官网.W ...

  8. 【Linux编译环境的搭建】Linux都没有,怎么学Linux编程?

    本文准备从0开始,一步步搭建一套属于自己的多节点Linux系统环境,这将是后续学Linux.用Linux.Linux环境编程.应用和项目部署.工具实验等一系列学习和实践的基石,希望对小伙伴们有帮助. ...

  9. Windows下QT4.8.4编译环境的搭建(转载http://blog.csdn.net/bestgonghuibin/article/details/38933141)

    开始使用QT了,所以第一步就是把环境搭起来,这里小记一下,以免以后忘记. 1. 下载安装文件 要使用QT功能,那么必须要下载QT的源码,还必须要一个是用QT的编译环境,可以是VS2010,也可以是专用 ...

随机推荐

  1. Python 字典 (4) 持续更新

    字典一种用名字来引用值的数据结构,这种数据结构称为 映射(mapping) .字典中的键可以是数字.字符串和元组. 字典 创建和使用 创建 phonebook = {'Aaron':133000000 ...

  2. TypeError: Object of type 'ListSerializer' is not JSON serializable

    问题: 解决:ser.data是json数据,你想要的

  3. crypot.js 生成hash256, 在IE下的卡顿问题。

    项目需求: 上传大文件,调用crypto.js生成hash256码. 直接上传大文件,IE会直接崩溃. 于是利用file.slice分片检测.但是浏览器会出现卡顿问题.开始以为是内存泄漏.但看服务器进 ...

  4. 001_C/C++笔试题_考察C/C++语言基础概念

    (一)文章来自:C/C++笔试题-主要考察C/C++语言基础概念.算法及编程,附参考答案 (二)基础概念 2. 头文件中的ifndef/define/endif的作用? 答:防止该头文件被重复引用. ...

  5. Vue + Vuex 简单使用

    我们要实现的很简单,就是点击+1的count加一,点击-1的时候count-1 一.mutation 在vue 中,只有mutation 才能改变state.  mutation 类似事件,每一个mu ...

  6. 【线性代数】1-1:线性组合(Linear Combinations)

    title: [线性代数]1-1:线性组合(Linear Combinations) toc: true categories: Mathematic Linear Algebra date: 201 ...

  7. 数据结构实验之求二叉树后序遍历和层次遍历(SDUT 2137)

    Problem Description 已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历和层序遍历. Input 输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据. ...

  8. 掌握 3 个搜索技巧,在 GitHub 上快速找到实用软件资源

    GitHub 作为目前广大程序猿最大的游乐场,在今年 6 月被 微软 以 75 亿美元价值的微软股票收购,GitHub 再次成为业界讨论的焦点.GitHub 以自由开放的定位吸引了相当多的个人开发者和 ...

  9. layer提示带文字

    直接撸代码: //加载层-风格4 layer.msg('加载中', { icon: 16 ,shade: 0.01 });

  10. Django基础之命名URL和URL反向解析

    在使用Django项目时,一个常见的需求是获得URL的最终形式,以用于嵌入到生成的内容中(视图中和显示给用户的URL等)或者用于处理服务器端的导航(重定向等). 人们强烈希望不要硬编码这些URL(费力 ...