快速了解 TypeScript

简介: 快速了解 TypeScript

1、简介

TypeScript是JavaScript类型的超集,它可以编译成纯JavaScript。

TypeScript可以在任何浏览器、任何计算机和任何操作系统上运行,并且是开源的。

TypeScript是一种流行的开源语言,由微软维护和开发。它受到了世界各地许多软件开发人员的喜爱和使用。

基本上,它是JavaScript的超集,为语言添加了新的功能。最值得注意的添加是静态类型定义,这在纯JavaScript中是不存在的。例如,由于类型的存在,可以声明我们期望的参数类型以及函数中返回的确切参数,或者我们正在创建的对象的确切形状。TypeScript是一个非常强大的工具,它为JavaScript项目打开了一个充满可能性的新世界。它在代码执行之前就防止了许多错误,从而使我们的代码更加安全和健壮——它在代码开发过程中发现了问题,并与Visual Studio code等代码编辑器完美集成。

2、安装TypeScript

有两种主要的方式来获取TypeScript工具:

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

针对使用npm的用户:

> npm install -g typescript

在VSCode 安装插件:

创建一个文件(例如:first.ts),并输入以下代码:

1. function greeter(person) {
2. return "Hello, " + person;
3. }
4. let user = "Jane User";
5. console.log(greeter(user))

3、编译代码

我们可以通过tsc 进行编译:

tsc first.ts

输出结果为一个first.js文件,它包含了和输入文件中相同的JavsScript代码。

如果我们想更快速的运行TypeScript代码,可以安装ts-node 如下所示:

npm i ts-node -g

在VSCode 里面,直接点击运行按钮就行了。如下所示:

4、类型注解

如果我们把方法greeter中的参数类型设置成数组,再次直接运行看下结果:

1. function greeter(person: Array) {
2. return "Hello, " + person;
3. }
4. 
5. let user = "Jane User";
6. console.log(greeter(user))

我们会看到提示,提示编译报错,如下所示:

1. TSError: ⨯ Unable to compile TypeScript:
2. first.ts(1,26): error TS2314: Generic type 'Array<T>' requires 1 type argument(s).

我们用tsc编译,看下对应结果,发现ts编译报错,但是对应的js文件被编译出来了,这说明按照ts规则写代码,但是编译后的结果可能不会按照预期执行,在一些情况下,会产生对应的bug。

5、接口

我们可以用接口定义一个对象,包括firstName 和 lastName,可以设置这两个属性的类型为字符串,如下图所示:

1. interface Person {
2. firstName: string;
3. lastName: string;
4. }
5. 
6. function greeter(person: Person) { 
7. return "Hello, " + person.firstName + " " + person.lastName;
8. }
9. let user = { firstName: "wang", lastName: "wu" };
10. console.log(greeter(user));

6、类

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

让我们创建一个Student类,它带有一个构造函数和一些公共字段。 注意类和接口可以一起共作,程序员可以自行决定抽象的级别。

还要注意的是,在构造函数的参数上使用public等同于创建了同名的成员变量。

1. class Student {
2. fullName: string;
3. constructor(public firstName, public middleInitial, public lastName) {
4. this.fullName = firstName + " " + middleInitial + " " + lastName;
5.     }
6. }
7. 
8. interface Person {
9. firstName: string;
10. lastName: string;
11. }
12. 
13. function greeter(person : Person) {
14. return "Hello, " + person.firstName + " " + person.lastName;
15. }
16. 
17. let user = new Student("wang", "", "wu");
18. 
19. document.body.innerHTML = greeter(user);

重新运行tsc first.ts,你会看到生成的JavaScript代码和原先的一样。 TypeScript里的类只是JavaScript里常用的基于原型面向对象编程的简写。

7、运行TypeScript Web应用

在first.html里输入如下内容:

1. <!DOCTYPE html>
2. <html lang="en">
3. <head>
4. <meta charset="UTF-8">
5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
7. <title>TypeScript DEMO</title>
8. </head>
9. <body>
10. <script src="first.js"></script>
11. </body>
12. </html>

在浏览器中,我们运行这个html文件,如下图所示:

在VSCode中,例如,我们选中greeter函数,会显示对应的定义,如下图所示:

我们可以按住comand + 点击对应的变量、或方法,示例,可以找到对应的定义,当然我们可以选中通过鼠标右键定位到,当然还有一些其他的操作,可以自己研究下。

以上就是TypeScript的一些简单操作,编辑器上我们可以选择VSCode,里面有许多对应插件比较轻量,微软的另一个工具Visual Studio也可以,但相对来说比较笨重一点。

相关文章
|
机器学习/深度学习 资源调度 数据可视化
UCB Data100:数据科学的原理和技巧:第十六章到第十八章
UCB Data100:数据科学的原理和技巧:第十六章到第十八章
402 0
|
对象存储
阿里云OSS 服务端签名后直传之分片上传(结合element-ui的upload组件)
阿里云OSS 服务端签名后直传之分片上传(结合element-ui的upload组件)
1040 0
|
11月前
|
人工智能 算法 安全
OpenRouter 推出百万 token 上下文 AI 模型!Quasar Alpha:提供完全免费的 API 服务,同时支持联网搜索和多模态交互
Quasar Alpha 是 OpenRouter 推出的预发布 AI 模型,具备百万级 token 上下文处理能力,在代码生成、指令遵循和低延迟响应方面表现卓越,同时支持联网搜索和多模态交互。
907 1
OpenRouter 推出百万 token 上下文 AI 模型!Quasar Alpha:提供完全免费的 API 服务,同时支持联网搜索和多模态交互
|
存储 运维 监控
|
存储 XML 图形学
Unity保存数据
在Unity中保存场景数据涉及数据收集、序列化和存储。数据收集包括游戏对象的基本信息(如位置、旋转、缩放、名称和标签)及组件数据(如渲染、物理和自定义脚本组件)。接着,通过序列化将数据转换为可存储格式。示例代码展示了如何使用XML保存场景中的游戏对象及其属性。
|
数据采集 存储 XML
Scrapy框架实现数据采集的详细步骤
本文介绍了使用Scrapy框架从宁波大学经济学院网站爬取新闻或公告详情页内容的过程,包括创建Scrapy项目、编写爬虫规则、提取所需信息,并最终将数据存储到Excel文件中的方法和步骤。
395 2
Scrapy框架实现数据采集的详细步骤
|
存储 安全 程序员
读书|通过免费云盘传书到 Kindle
通过免费云盘便捷地管理 Kindle 上的书籍。
606 0
|
Cloud Native Go 开发工具
如何让CSDN学习成就个人能力六边形全是100分:解析个人能力雷达图的窍门
如何让CSDN学习成就个人能力六边形全是100分:解析个人能力雷达图的窍门
859 0
|
JavaScript
vue 【详解】父子组件传值、父子组件数据双向绑定 —— : | update: |.sync | v-bind.sync | v-model(含model选项和自定义v-model)
vue 【详解】父子组件传值、父子组件数据双向绑定 —— : | update: |.sync | v-bind.sync | v-model(含model选项和自定义v-model)
669 1

热门文章

最新文章