5分钟入门TypeScript (翻译自官方文档)

让我们通过使用TypeScript来构建一个简单的Web应用程序来入门吧

 

安装 TypeScript

获取TypeScript主要有两种方法:

  • 通过npm (Node.js包管理器)
  • 通过安装Visual Studio TypeScript插件

Visual Studio 2017和VIsual Studio 2015 Update 3 默认包含了TypeScript。 如果你没有在Visual Studio上安装TypeScript,你仍然可以从这里下载它。

对于使用NPM的用户,通过以下命令安装:

> npm install -g typescript

 

创建你的第一个TypeScript文件

在你的编辑器里创建一个greeter.ts的文件, 将下面的代码复制到这个文件中:

function greeter(person) {
    return "Hello, " + person;
}

let user = "Jane User";

document.body.innerHTML = greeter(user);

编译你的代码

我们使用了一个.ts的扩展名, 但其实这些代码仅使用了JavaScript。你可以直接复制粘贴这些代码到一个已有的JavaScript程序中去使用。

在命令行中运行TypeScript编译器:

tsc greeter.ts

这个命令将会生成一个包含了同样JavaScript代码的greeter.js文件,这样就可以在我们的JavaScript程序中去使用TypeScript了。

现在我们开始使用一些TypeScript提供的新特性。像下面一样添加一个 :string 类型的注解到person函数的参数中:

function greeter(person: string) {
    return "Hello, " + person;
}

let user = "Jane User";

document.body.innerHTML = greeter(user);

类型注解

类型注解在TypeScript是一个记录函数和变量预期契约的轻量级方法,在这个例子中,我们预计greeter函数将会在被调用时候使用一个string类型的参数。我们可以尝试传递一个数组去调用greeter函数:

function greeter(person: string) {
    return "Hello, " + person;
}

let user = [0, 1, 2];

document.body.innerHTML = greeter(user);

重新编译,你将会看到以下的错误:

error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'.

类似,试着在调用greeter时候移除所有的参数。TypeScript将会告诉你,在调用函数的时候使用了不是预料中个数的参数。在这两个例子中, TypeScript可以通过基于代码结构和类型注解进行静态分析。

需要注意的是,尽管有一些错误,但是greeter.js文件依然会被创建。你甚至能在你的代码有错误的时候使用TypeScript,但是这种情况下TypeScript会发出警告,你的代码可能不会像预计的那样执行。

 

接口

让我们进一步来改进我们的示例。这里我们使用接口来描述一个包含firstName和lastName属性的对象。在TypeScript中如果他们的内部结构兼容,那么这两种类型是兼容的。这允许我们不用显式的去实现一个接口,仅仅定义好接口的格式就可以。

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);
 

最后,我们使用类来扩展这个例子。TypeScript支持新的特性,例如支持基于类的面向对象编程。

这里我们创建一个Student类,包含一个构造函数和几个公共的字段。注意类和接口可以很好的在一起使用,让开发者来决定正确的抽象级别。

同样值得注意的是,我们在构造函数参数上使用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);

再次运行 tsc greeter.ts ,你将会发现像之前一样生成了JavaScript文件。在TypeScript中的类仅仅是针对JavaScript中常用的基于原型面向对象的简单表达方式。

 

在你的Web程序中使用TypeScript

现在我们使用下面的代码创建 greeter.html文件:

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

在浏览器打开greeter.html来运行你的第一个基于TypeScript的简单Web程序。

可选:在Visual Studio打开greeter.ts或者复制它的代码到TypeScript文件,你可以在变量上悬停以查看其类型。注意,在某些情况下,这些类型是自动为您推断的。重新键入最后一行,并根据DOM元素的类型查看完成列表和参数帮助。将光标放在对greeter函数的调用上,并按F12键,将会跳转到它的定义。请注意,您也可以右键单击一个成员并使用重构去重命名它。

The type information provided works together with the tools to work with JavaScript at application scale.。更多示例,请参见网站的示例部分。

翻译自: http://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html 

猜你喜欢

转载自www.cnblogs.com/Turbo/p/10014793.html