1.安装TypeScript

有两种方式安装TypeScript:

  • Via npm

  • 通过安装VS插件,更多可参见这里

对于npm用户,可以直接使用下面的命令行安装:

nmp install -g TypeScript

2.创建第一个TypeScript文件

打开editor,最好使用VSCode并且安装TypeScript插件支持。创建greeter.ts文件,并写入:

function greeter(person) {
return "Hello, " + person;
}
let user = "Jane User";
document.body.innerHTML = greeter(user);

3.编译你的代码

TypeScript文件后缀都是.ts。虽然我们使用的是ts后缀,但是上面写的这些code就只是javascript内容,你可以直接copy一下,然后使用这些内容进行测试。打开终端,找到该文件所在目录,执行以下命令:

tsc greeter.ts

便会生成一个greeter.js文件,里面内容如下:

function greeter(person) {
return "Hello, " + person;
}
var user = "Jane User";
document.body.innerHTML = greeter(user);

其实刚才的ts文件内容和编译出来的js内容是一样的,在web application中,可以直接使用编译出来的js文件。

现在,可以使用TypeScript的一些新特性,添加 : string来注释person的类型:

function greeter(person: string) {
return "Hello, " + person;
}
let user = "Jane User";
document.body.innerHTML = greeter(user);

4.Type annotations

在TypeScript中,Type annotations可以用来标识变量或者参数的类型,在上面的例子中,使用了string类型来标识person。那么这个时候一旦将代码更改为:

function greeter(person: string) {
return "Hello, " + person;
}
let user = [1,2,3];
document.body.innerHTML = greeter(user);

编译器就会报错:

greeter.ts(7,35): error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'.

同样地,如果在调用greeter函数的时候什么也不传入,则会报错误:

greeter.ts(7,27): error TS2554: Expected 1 arguments, but got 0.

也就是说,TypeScript会根据代码结构和提供的类型注释提供代码静态分析。

虽然报错,但greeter.js还是被生成了,你可以继续使用包含错的的TypeScript,但是结果可能不会满足你的预期。

5.Interface

还是在上面的demo代码基础上进行修改,我们可以使用interface来描述一个对象有firstName和lastName两个属性。在TypeScript中,如果其内部结构兼容,则两种类型兼容。这就说明了我们可以通过Interface来实现对象,而不需要implement去实现。

interface Person {
firstName: string;
lastName: string;
}
function greeter(person: Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
let user = {firstName: "Jane", lastName: "User"};
document.body.innerHTML = greeter(user);

这里需要注意,interface里面只能声明属性或者签名,而无法添加方法。

6.class

TypeScript支持JavaScript的新功能,其中很重要的一个功能就是基于类的面向对象编程(OOP)。

这里创建一个Student的类,它有一个构造函数和一个属性。看一下下面的代码,你会发现类和Interface在一起结合的很完美,程序员可以自己决定正确的抽象。另外,还有一个public的关键字,和java中的public类似:

class Student {
fullName: string;
constructor(public firstName: string,public middleInitial: string,public lastName: string) {
this.fullName = firstName + " " + middleInitial + " " + lastName;
}
}
interface Person {
firstName: string;
lastName: string;
}
function greeter(person: Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
let user = new Student("Jane","M.","User");
document.body.innerHTML = greeter(user);

值得关注的是,我们将上面代码进行编译为js文件,你可以看到编译后的文件为:

var Student = /** @class */ (function () {
function Student(firstName, middleInitial, lastName) {
this.firstName = firstName;
this.middleInitial = middleInitial;
this.lastName = lastName;
this.fullName = firstName + " " + middleInitial + " " + lastName;
}
return Student;
}());
function greeter(person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
var user = new Student("Jane", "M.", "User");
document.body.innerHTML = greeter(user);

其实就是个Student的函数。

说了这么多,怎么能直接看到运行效果呢?很简单,创建一个html文件,然后在里面引用编译的js文件即可:

<!DOCTYPE html>
<head>
<title>TypeScript Greeter</title>
</head>
<body>
<script src="greeter.js"></script>
</body>
</html>

使用浏览器打开此html文件即可运行 ~ ~

另外,VSCode的提供也是很强大的,具体自己感受。

5分钟了解TypeScript的更多相关文章

  1. 中文代码示例之5分钟入门TypeScript

    "中文编程"知乎专栏原文 Typescript官方文档起的这个噱头名字: TypeScript in 5 minutes, 虽然光看完文章就不止5分钟...走完整个文档流水账如下( ...

  2. 5分钟上手TypeScript

    安装TypeScript 安装这个工具有两种方式: 用npm安装npm install -g typescript 安装visual studio的TypeScript插件 编译TypeScript ...

  3. 5分钟入门LingaScript-尝鲜中文版TypeScript

    续前文转载: 中文輸進去,程式出得來,開發者發大財 -LingaScript:中文化TypeScript, 虽然其中例程使用了繁体中文语法, 但它同时也支持简体中文语法. 注: 此文中VS Code的 ...

  4. 2018-05-09 5分钟入门CTS-尝鲜中文版TypeScript

    知乎原链 本文为中文代码示例之5分钟入门TypeScript的CTS版本. CTS作者是@htwx(github). 它实现了关键词和标准库的所有命名汉化. 本文并未使用附带的vscode相关插件(包 ...

  5. Vue + TypeScript + Element 搭建简洁时尚的博客网站及踩坑记

    前言 本文讲解如何在 Vue 项目中使用 TypeScript 来搭建并开发项目,并在此过程中踩过的坑 . TypeScript 具有类型系统,且是 JavaScript 的超集,TypeScript ...

  6. 在React旧项目中安装并使用TypeScript的实践

    前言 本篇文章默认您大概了解什么是TypeScript,主要讲解如何在React旧项目中安装并使用TypeScript. 写这个的目的主要是网上关于TypeScript这块的讲解虽然很多,但都是一些语 ...

  7. TypeScipt学习

    TypeScript具有类型系统,且是JavaScript的超集.它可以编译成普通的JavaScript代码. TypeScript支持任意浏览器,任意环境,任意系统并且是开源的.Ts主要用于解决那些 ...

  8. Yii2 中使用ts

    在运行环境 vagrant Ubuntu box 中安装 sass ,typescript等 安装需要的软件: sudo su -c "gem install sass" # 可选 ...

  9. 翻译:Angular 2 - TypeScript 5 分钟快速入门

    原文地址:https://angular.io/docs/ts/latest/quickstart.html Angular 2 终于发布了 beta 版.这意味着正式版应该很快就要发布了. 让我们使 ...

随机推荐

  1. BBS论坛(二十三)

    23.添加板块 (1)apps/models class BoardModel(db.Model): __tablename__ = 'board' id = db.Column(db.Integer ...

  2. Java集合类的那点通俗的认知

    文/沉默王二 开门见山地说吧,Java提供了一套完整的集合类(也可以叫做容器类)来管理一组长度可变的对象(也就是集合的元素),其中常见的类型包括List.Set.Queue和Map.从我个人的编程经验 ...

  3. Unity GC 优化要点

    参考:http://blog.csdn.net/znybn1/article/details/76464896 为啥要点?因为讲的重点. 游戏运行时来存储数据,当这些数据不再被使用时,存储这些数据的内 ...

  4. PC逆向之代码还原技术,第二讲寻找程序入口点

    PC逆向之代码还原技术,第二讲寻找程序入口点 一丶简介 程序逆向的时候.我们需要知道程序入口点.动态分析的时候以便于看是什么程序编写的. 比如VC++6.0 我们可以写一个程序测试一下 我们写一段代码 ...

  5. Java 由浅入深GUI编程实战练习(三)

    一,項目介紹 1.可以查看年,月,日等功能.能获取今天的日期,并且能够通过下拉年,月的列表. 2.当程序运行时,显示的时间是系统当前时间. 3.可以手动输入时间,确定后系统跳转到制定的时间. 4.提供 ...

  6. 【Linux】常用命令,持续更新

    Linux 一.linux的组成 内核,shell,文件系统,应用程序 二.linux目录结构 bin,sbin,home,root,boot,dev,etc,lib, 三.文件目录操作 ls,cd, ...

  7. sprinbcloud学习之-Failed to bind properties under 'logging.level' to java.util.Map<java.lang.String>

    日志报错,提示Failed to bind properties under 'logging.level' to java.util.Map<java.lang.String>, 原因为 ...

  8. Eclipse Ctrl+Space 无法工作的问题

    Window->preference->Keys 然后找到content Assist,然后重新设置为自己想要的Short cut 就好了

  9. 15 , CSS 背景与列表

    1.CSS 中背景的使用 2.CSS 中列表的使用 15.1 CSS 中背景的使用 属性名称 属性值 说明 background-attachment scroll 设置背景图像会随视窗滚动 条的移动 ...

  10. [HTML/CSS]colum-gap属性

    属性定义及使用说明 column-gap的属性指定的列之间的差距. 注意: 如果指定了列之间的距离规则,它会取平均值.   语法 column-gap: length|normal;   值 描述 l ...