5分钟了解TypeScript

时间: 2018-06-13阅读: 1901标签: TypeScript

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的提供也是很强大的,具体自己感受。


来源:https://www.cnblogs.com/zhanggui/archive/2018/06/12/9173660.html

站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/876

10个帮助你捕获更多Bug的TypeScript建议

有一个对TypeScript常见的误解是:一个变量只要标注了类型,那么它总是会检查自己的数据类型是否与我们的预期一致。与该误解相呼应的想法会认为:对一个从后端返回的对象进行类型标注可以在代码运行时执行检查来确保对象类型的正确性。

如何编写 Typescript 声明文件

使用TypeScript已经有了一段时间,这的确是一个好东西,虽说在使用的过程中也发现了一些bug,不过都是些小问题,所以整体体验还是很不错的。有关TypeScript声明类型声明相关的目前就总结了这些比较常用的

谷歌为何会选用TypeScript?

谷歌在很早之前就张开双臂拥抱 Web 应用程序,Gmail 已经发布 14 年了。当时,JavaScript 的世界是疯狂的。Gmail 工程师不得不为 IE 糟糕的垃圾回收算法捏一把汗,他们需要手动将字符串文字从 for 循环中提取出来,以避免 GC 停顿

使用Typescript和ES模块发布Node模块

TypeScript已经成为一种非常流行的JavaScript语言,这是有原因的。它的类型系统和编译器能够在您的软件运行之前的编译时捕获各种bug,并且附加的代码编辑器功能使它成为一个非常适合开发人员的高效环境。

什么场景下不应该使用 TypeScript?

TypeScript 很棒,但有时用它编程只是在浪费时间。TypeScript 的优势在于它能在编译时调试 JavaScript,但有些情况并不适合我们使用 TypeScript,比如构建小型应用程序或原型应用时。

JavaScript和TypeScript中的void

如果你来自传统的强类型语言,可能会很熟悉 void 的概念:一种类型,告诉你函数和方法在调用时不返回任何内容。void 作为运算符存在于 JavaScript 中,而作为基本类型存在于 TypeScript 中。在这两个世界中

TypeScript 是怎样工作的?

本文概述了 TypeScript 的工作原理:典型的 TypeScript 项目的结构是什么?什么被编译以及怎样编译?我们如何使用 IDE 编写 TypeScript?

使用 TypeScript 开发 HapiJS 应用

要在开发中使用 TypeScrip,同时至少需要有一个工具,可以一直监听项目文件的变更,并实时的将变更更新至启动的服务中,我选择使用 Nodemon,首先添加以下几个开发依赖

抛弃 JS,使用 TypeScript

最近几个月我已经全面抛弃 JavaScript,完全使用 TypeScript 进行前端开发(只在上课的时候用到 JS)。先说优点:bug 显著减少,之前会遇到的 xxx 为空的问题几乎不会出

TypeScript 类型元编程基础入门

TypeScript 已经在前端圈获得了广泛的群众基础。但据个人观察,很多同学还处于刚刚脱离 AnyScript 的阶段,看到 K in keyof T 这类东西就头疼,读不懂现代前端框架中普遍使用的类型操作技巧。如果你也对类型体操感到一头雾水,本文或许能为你提供一些授人以渔式的帮助

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!