5分钟上手TypeScript踩坑

前言

最近在学习TypeScript,发现TypeScript的官方文档中的5分钟上手TypeScript辅导教程中会有许多新手可能很难理解的地方,所以记录一下

声明一下我用的版本是

npm install typescript@2.9.2 -g

以后版本可能有所不同

什么是TypeScript

维基百科上说 “TypeScript是一种由微软开发的自由和开源的编程语言。它是JavaScript的一个严格超集,并添加了可选的静态类型和基于类的面向对象编程。”

从名字上我们就可以看出 TypeScript 和 JavaScript 不同的地方就是type,因为 TypeScript 相较于 JavaScript 多了类型检查这一功能,都知道 JavaScript 是一门动态类型、静态作用域的语言,而 TypeScript 的更像变成了一门静态类型的语言

如何运行TypeScript

浏览器只能运行js、html、css语言,那ts要如何运行在浏览器上呢,我们要记住

浏览器可以运行js
浏览器不能运行ts
要把ts变成js才可以在浏览器上运行
tsc会把ts转化成js

那tsc是什么,如何获取呢,需要我们学会使用npm,然后安装

npm install -g typescript

就可以得到tsc和ts-node这两个命令了

构建第一个TypesScript文件

在五分钟上手TypeScript的文档中,要求我们将以下代码输入到greeter.ts文件里

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

let user = "Jane User";

document.body.innerHTML = greeter(user);

因为上面我们说过浏览器不能运行ts,而document.body.innerHTML又需要我们在浏览器上运行,所以我们需要先把ts文件转化成js文件,这样会比较麻烦,所以下面我都建议改成用console.log

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

let user = "Jane User";

console.log(greeter(user));

然后

ts-node greeter.ts

可以在终端中直接打出输出结果

类型注解

在上面的代码中,我们还看不出ts和js的区别,下面对上面的代码进行一个改变

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

let user = "Jane User";

console.log(greeter(user));

在参数后加个冒号然后加个类型,这样就相当于给参数加上的了一层禁锢,当你输入的参数并不是字符串类型的时候

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

let user = 123;

console.log(greeter(user));

进行编译转化成js的时候就会报错,如下

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

这样子你发现错误的时机就从运行到浏览器上阶段提前到了编译阶段

另外值得一提的是如果,参数是undefined,那么类型检查并不会报错,例如

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

let user = undefined;

console.log(greeter(user));

运行之后会正确输出

Hello, undefined

接口

学过 java 或者 c# 的人可能会很熟悉这个,就是相当于规定了一个对象一定需要包含几个属性,例如官方文档所给的例子,如果我们的对象不符合规则少写一个属性

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

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

let user = { firstName: "Jane"};

console.log(greeter(user));

就会报错

greeter.ts(12,21): error TS2345: Argument of type '{ firstName: string; }' is not assignable to parameter of type 'Person'.
Property 'lastName' is missing in type '{ firstName: string; }'.

但如果我们多写了属性

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

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

let user = { firstName: "Jane", lastName: "User" , m:'ss'};

console.log(greeter(user));

它仍然是可以正常运行的

TypeScript 的类的创建有点像 ES6 但是多了一个 public 的关键词,熟悉 java 的同学可能会知道,但是在ts中这个public的具体是什么作用,在官方文档给的例子中可以看出

class Student {
    fullName: string;
    constructor(public firstName, public middleInitial, public lastName) {
        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");

console.log(greeter(user));

实际上就相当于

class Student {
  fullName: string;
  firstName: string;
  middleInitial: string;
  lastName: string;
  constructor(firstName, middleInitial, lastName) {
    this.firstName = firstName
    this.middleInitial = middleInitial
    this.lastName = lastName
    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");

console.log(greeter(user));

后记

以上就是对5分钟上手TypeScript的解读,我也在继续学习当中,ts相较与js更加严格,可以在js运行之前发现错误,代码更不容易出现bug,看得出来是js从动态类型向静态类型的一种转变,但是上面我写的时候也发现,undefined类型并没有检查出来,所以可能还在不停完善中,但是不得不承认TypeScript开发会更舒服

### 回答1: 1. 安装TypeScript:使用 npm 命令 "npm install -g typescript" 安装 TypeScript。 2. 创建TypeScript文件:创建一个名为 "main.ts" 的文件,在其中编写 TypeScript 代码。 3. 编译TypeScript文件:使用命令 "tsc main.ts" 编译 TypeScript 文件,生成同名的 JavaScript 文件。 4. 运行JavaScript文件:使用命令 "node main.js" 运行编译生成的 JavaScript 文件。 5. 添加类型注解:在变量前加上类型注解,如 "let message: string = 'Hello World'"。 6. 添加类型检查:使用 "tsc --noEmit" 命令只进行类型检查而不生成 JavaScript 文件。 这些步骤可以帮助你在5分钟内快速上手 TypeScript。 ### 回答2: TypeScript是一种静态类型的编程语言,它是JavaScript的超集。要快速上手TypeScript,你可以按照以下步骤进行: 1. 安装TypeScript:首先,你需要在你的计算机上安装TypeScript。你可以使用Node.js包管理器(npm)或者使用TypeScript官方提供的安装包进行安装。 2. 创建TypeScript文件:在你的项目目录下,创建一个以`.ts`扩展名结尾的TypeScript文件。例如,你可以创建一个名为`example.ts`的文件。 3. 编写TypeScript代码:在刚才创建的TypeScript文件中,你可以使用JavaScript的语法以及TypeScript的类型注解来编写代码。TypeScript提供了一些新的语法和特性,例如类、接口、泛型等。 4. 编译TypeScript代码:在终端中,进入到你的项目目录,并使用TypeScript编译器(tsc)将TypeScript代码编译成JavaScript代码。你可以使用以下命令进行编译: ``` tsc example.ts ``` 5. 运行JavaScript代码:在编译成功后,你将得到一个与TypeScript文件同名的JavaScript文件(`example.js`)。你可以使用Node.js或者在浏览器中运行该JavaScript文件来查看结果。 以上就是使用TypeScript快速上手的基本步骤。当你熟悉了TypeScript的基本语法和特性后,你可以进一步学习TypeScript的高级特性,如模块化、异步编程等。还可以结合一些TypeScript的开发工具,如编辑器插件、调试工具等,来提升你的开发效率。 ### 回答3: 要快速上手TypeScript,你可以按照以下步骤进行操作: 1. 安装TypeScript:首先,你需要在你的计算机上安装TypeScript编译器。你可以通过npm(Node Package Manager)来安装它,使用下面的命令: ``` npm install -g typescript ``` 2. 创建一个TypeScript文件:在你的项目中,创建一个后缀名为`.ts`的TypeScript文件。 3. 确定编译选项:在你的项目根目录下创建一个`tsconfig.json`文件,用于配置TypeScript编译器的选项。你可以根据需要选择不同的选项,比如目标版本、模块系统等。 4. 编写TypeScript代码:在TypeScript文件中编写你的代码。TypeScript是一种强类型的编程语言,它提供了类、接口、枚举等丰富的语言特性。 5. 编译TypeScript代码:使用以下命令将你的TypeScript代码编译为JavaScript代码: ``` tsc ``` 6. 运行JavaScript代码:在编译成功后,你将得到一个后缀名为`.js`的JavaScript文件。你可以使用任何支持JavaScript的环境(如浏览器、Node.js等)来运行这些代码。 7. 运行时类型检查:TypeScript还提供了运行时类型检查的功能。你可以使用像`typeof`、`instanceof`等运算符来进行类型检查,确保程序的运行过程中类型的正确性。 通过按照上述步骤进行操作,你就可以快速上手TypeScript,并开始使用它来开发你的项目了。当然,为了更好地掌握TypeScript的更高级特性和最佳实践,你可能需要进一步学习和实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值