TypeScript学习-5分钟上手TS教程

1,334 阅读3分钟

最近开始接触TypeScript,准备从官网5分钟上手TypeScript教程手册指南写一系列学习笔记,本文是官网5分钟上手TypeScript教程学习笔记。

1.安装TypeScript

使用npm安装(node.js包管理器)

npm install -g typescript

2.初识TypeScript

构建一个TypeScript文件

首先创建helloTs.ts代码如下:

function hello(person) {
    return 'Hello'+person;
}
let user = 'xiaoming'
document.body.innerHTML = hello(user)

编译代码

由于使用了.ts 扩展名,在html中无法直接引用ts文件,所以我们需要编译成JavaScript代码。

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

tsc helloTs.ts

输出结果为一个helloTs.js文件,它包含了和输入文件中相同编译后的JavaScript代码,现在我们来看看它。

function hello(person) {
    return 'Hello' + person;
}
var user = 'xiaoming';
document.body.innerHTML = hello(user);

由于默认编译成es5,所以只有声明方式let转成了var一点区别,其他代码一样。

类型注解

尝试了在ts文件里写js代码编译,接下来我们尝试一下TypeScript工具带来的高级功能--类型注解

在上述代码中,我们给函数hello的参数person添加:string类型注解,如下:

function hello(person: string) {
    return 'Hello'+person;
}
let user = 'xiaoming'
document.body.innerHTML = hello(user)

当我们传入的实参user为字符串格式时,我们进行编译,得到的js代码和未添加类型注解时一样。

TypeScript里的类型注解是一种轻量级的为函数或变量添加约束的方式。在上面的例子里,我们希望hello函数接收一个字符串格式的参数,现在我们尝试把参数改成传入一个数字:

function hello(person: string) {
    return 'Hello'+person;
}
let user = 123
document.body.innerHTML = hello(user)

重新编译,会看到产生了一个错误:

helloTs.ts:5:33 - error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
5 document.body.innerHTML = hello(user)
Found 1 error.

这时我们发现,TypeScript告诉我们参数类型错误,尽管告诉我们有错误,但TypeScript编译器依旧会创建对应的js文件,但在这种情况下,TypeScript会警告你代码可能不会按预期执行。

接口(interface)

interface是TypeScript的核心原则之一,是对值所具有的结构进行类型检查,为这些类型命名和为你的代码或第三方代码定义契约。听起来很晕,直接上代码看看:

interface Person {
    firstName: string;
    lastName: string;
}

function hello(person: Person) {
    return "Hello, " + person.firstName + " " + person.lastName;
}

let user = { firstName: "xiaoming", lastName: "xiaohong" };

document.body.innerHTML = hello(user);

在上述代码里,我们可以理解为我们可以用interface来定义一个对象、函数或类的结构和类型,后续使用时,必须严格遵守定义的规则,否则将报错。

类(class)

传统的JavaScript程序使用函数和基于原型的继承来创建可重用的组件,但对于熟悉使用面向对象方式的程序员来讲就有些棘手,因为他们用的是基于类的继承并且对象是由类构建出来的。 从ES6开始,我们能够使用基于类的面向对象的方式。 使用TypeScript,允许开发者现在就使用这些特性,并且编译后的JavaScript可以在所有主流浏览器和平台上运行。

看个例子:

class Greeter {
    greeting: string;
    constructor(message: string) {
        this.greeting = message;
    }
    greet() {
        return "Hello, " + this.greeting;
    }
}

let greeter = new Greeter("world");

我们声明一个 Greeter类。这个类有3个成员:一个叫做 greeting的属性,一个构造函数和一个 greet方法,可以看出,我们在引用任何一个类成员的时候都用了 this,它表示我们访问的是类的成员。

官网5分钟上手TypeScript教程内容不多,看完能对TS大概有个概念,进一步学习参考--手册

下一步就是跟着官网手册学习啦,加油💪