TypeScript是JavaScript的一个超集类型编译为普通的JavaScript。TypeScript是纯面向对象与类,接口和静态类型。流行的JavaScript框架角2.0是写在TypeScript。
TypeScript从今天数以百万计的JavaScript开发者所熟悉的语法和语义开始。使用现有的JavaScript代码,包括流行的JavaScript库,并从JavaScript代码中调用TypeScript代码。
TypeScript可以编译出纯净、 简洁的JavaScript代码,并且可以运行在任何浏览器上、Node.js环境中和任何支持ECMAScript 3(或更高版本)的JavaScript引擎中。
安装TypeScript
有两种主要的方式获取TypeScript工具
1.打开Node.js官网(nodejs.org)直接点击安装或者点击下载选择适合自己电脑的版本下载。
2.下载成功后直接双击安装,安装成功后可以在程序中找到Node.js。
3.打开命令行cmd,运行apm,运行成功则表示安装成功,如果安装失败则找到错误信息中的路径新建npm文件夹再次运行apm即可。
4.打开TypeScript官网(www.typescriptlang.org)复制安装命令(npm instll -g typescript)粘贴到cmd中进行安装。
5.在cmd中运行tsc,若出现信息则说明安装成功。此时在npm文件夹中就有tsc了。
安装TypeScript的Visual Studio插件
Visual Studio2015和Visual Studio 2013 Update 2默认包含了TypeScript。如果你没有安装包含TypeScript的Visual Studio ,仍然可以下载。
创建第一个TypeScript文件
在编辑器(推荐使用webstorm)中创建hello.ts文件,并输入以下JavaScript代码:
function hello(person){
return "Hello," + person;
}
var user = "Lisi";
document.body.innerHTML = hello(user);
虽然我们使用了.ts
作为文件扩展名,但是这些代码仅仅是JavaScript代码。你可以将代码直接复制粘贴到已有的JavaScript应用程序中。
在命令行中运行TypeScript编译器:
tsc hello.ts
其结果你得到一个包含相同JavaScript代码的hello.js文件。在我们启动和运行的JavaScript应用程序中使用TypeScript。现在我们可以开始利用TypeScript提供的新工具。给函数参数‘person’添加 :string类型注解,如下所示:
function hello(person: string) {
return "Hello, " + person;
}
var user = "Lisi";
document.body.innerHTML = hello(user);
类型注解在TypeScript中是记录函数或变量约束的简便方法。在这个示例中,我们想要在调用hello函数时传入一个字符串类型参数。我们可以尝试在调用hello函数时变为传入一个数组:
function hello(person: string) {
return "Hello, " + person;
}
var user = [0, 1, 2];
document.body.innerHTML = hello(user);
编译后,将看到一个错误:
greeter.ts(7,26): Supplied parameters do not match any signature of call target
在调用hello函数时尝试不传入任何参数。TypeScript将会告诉你调用这个函数时需要带一个参数。在这两个示例中,TypeScript基于你的代码结构和类型注解可以提供静态分析。
注意,虽然有错误,但是仍然编译创建了hello.js文件,即使你的代码中有错误,你仍旧可以使用TypeScript。但是在这种情况,TypeScript会发出警告:你的代码可能不能按照你预想的那样运行。
interface Person {
firstName: string;
lastName: string;
}
function hello(person: Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
var user = { firstName: "lisi", lastName: "He" };
document.body.innerHTML = hello(user);
类
TypeScript支持新的JavaScript特性,像基于类的面向对象编程的支持。在这里,我们创建一个具有构造函数和一些公共字段的student类。此外,在构造函数参数中使用public是一种简写形式,它将自动创建具有该名称的属性。
class Student {
fullName: string;
constructor(public firstName, public middleInitial, public lastName) {
this.fullName = firstName + " " + middleInitial + " " + lastName;
}
}
interface Person {
firstName: string;
lastName: string;
}
function hello(person : Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
var user = new Student("Lisi", "H.", "He");
document.body.innerHTML = hello(user);
再次运行tsc hello.ts,可以看到生成的JavaScript代码和以前的一样。TypeScript中的类只是对于经常在JavaScript中使用了相同的基于原型的面向对象的简写。
在hello.html中输入以下代码:
TypeScript Hello
在浏览器中打开hello.html就可以运行第一个TypeScript web应用程序了。