快速了解 TypeScript

news2024/11/23 13:38:08

目录

1、简介

2、安装TypeScript

3、编译代码

4、类型注解

5、接口

6、类

7、运行TypeScript Web应用


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),并输入以下代码:

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

3、编译代码

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

tsc first.ts

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

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

npm i ts-node -g

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

4、类型注解

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

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

let user = "Jane User";
console.log(greeter(user))

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

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

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

5、接口

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

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

function greeter(person: Person) { 
  return "Hello, " + person.firstName + " " + person.lastName;
}
let user = { firstName: "wang", lastName: "wu" };
console.log(greeter(user));

6、类

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

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

还要注意的是,在构造函数的参数上使用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("wang", "", "wu");

document.body.innerHTML = greeter(user);

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

7、运行TypeScript Web应用

first.html里输入如下内容:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>TypeScript DEMO</title>
</head>
<body>
 <script src="first.js"></script>
</body>
</html>

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/526694.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【哈士奇赠书活动 - 23期】-〖你好 ChatGPT〗

文章目录 ⭐️ 赠书 - 《你好 ChatGPT》⭐️ 内容简介⭐️ 作者简介⭐️ 精彩书评⭐️ 赠书活动 → 获奖名单 ⭐️ 赠书 - 《你好 ChatGPT》 ⭐️ 内容简介 人工智能&#xff08;AI&#xff09;时代已经来临&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;正在进一步…

【精选】各种节日祝福(C语言,可修改),Easyx图形库应用+源代码分享

博主&#xff1a;命运之光✨✨ 专栏&#xff1a;Easyx图形库应用&#x1f4c2; 目录 ✨一、程序展示 范例一&#xff1a;❤新年祝福❤ 范例二&#xff1a;❤母亲节祝福❤ ✨二、项目环境 简单介绍一下easyx图形库应用 Easyx图形库 ✨三、运行效果展示&#xff08;视频&am…

【C++起飞之路】初级——缺省参数、函数重载、引用

C&#xff1a;函数重载、引用 一、缺省参数&#x1f6eb;1.1 &#x1f69d;什么是缺省参数1.2 &#x1f69d;缺省参数的分类a. 全缺省参数b. 半缺省参数&#xff08;部分缺省参数&#xff09; 1.3 &#x1f69d;注意事项 二、函数重载&#x1f6eb;2.1 &#x1f69d;什么是函数…

时间复杂度:根号n一般来说大于log(n)

f ( x ) x − l o g 2 x f(x)\sqrt{x}-log_2 x f(x)x ​−log2​x 对这函数求导后&#xff0c;比较分母大小&#xff0c;可以得到结论 f ( x ) f(x) f(x)先减后增&#xff0c;分界点为 x 4 ( l n 2 ) 2 x \frac{4}{(ln2)^2} x(ln2)24​ f ( x ) f(x) f(x)的图像如下所示&a…

PPT技能之文字格式,转身的文字这样做

只要用PPT&#xff0c;一定需要设置文字格式。好的文字格式&#xff0c;给人惊艳的感觉&#xff0c;是一种愉悦的享受。 你的关注&#xff0c;是我最大的动力&#xff01;你的转发&#xff0c;我的10W&#xff01;茫茫人海有你的支持&#xff0c;给我无限动力。 1、字体。 按…

什么是Java中的阻塞队列?它有什么作用?

在Java中&#xff0c;阻塞队列是一种特殊的队列&#xff0c;它可以在队列为空或队列已满时阻塞添加或移除元素的操作。阻塞队列通常用于多线程编程中&#xff0c;可以帮助我们更加方便地进行线程通信和协作。在本文中&#xff0c;我将从面试的角度&#xff0c;详细讲解Java中的…

在线办公时代,如何选择合适的云办公软件?

文章目录 在线办公时代&#xff0c;如何选择合适的云办公软件&#xff1f;在线文档石墨文档腾讯文档飞书文档 远程控制ToDesk向日葵 会议协同腾讯会议ZOOM 总结 在线办公时代&#xff0c;如何选择合适的云办公软件&#xff1f; 随着数字经济的发展和疫情的影响&#xff0c;云办…

100天精通Python(可视化篇)——第87天:matplotlib绘制不同种类炫酷雷达图参数说明+代码实战(普通、堆叠、多个、矩阵、极坐标雷达图)

文章目录 专栏导读1. 雷达图1&#xff09;介绍2&#xff09;参数说明 2. 基本雷达图3. 堆叠雷达图4. 六边形战士5. 多个雷达图6. 雷达图矩阵7. 极坐标雷达图 专栏导读 &#x1f525;&#x1f525;本文已收录于《100天精通Python从入门到就业》&#xff1a;本专栏专门针对零基础…

做一名活动策划是什么体验

在一些不了解的人眼中&#xff0c;活动策划就是那种外表光鲜亮丽&#xff0c;气场十足&#xff0c;眼神犀利&#xff0c;跷着二郎腿&#xff0c;情绪饱满的完成一场又一场的完美的秀。 好像确实是这样&#xff0c;但是你们又知不知道这背后的一切我们活动策划到底付出了什么&a…

SpringMVC的三大功能

目录 一、初识SpringMVC 1.1 MVC的定义 1.2 MVC和SpringMVC的关系是什么? 1.3 SpringMVC的重要性 二、Spring MVC的三大功能 2.1 连接功能 2.1.1 RequestMapping 注解介绍 2.1.2 GetMapping 和 PostMapping 2.2 获取参数功能 2.2.1 传递普通参数 2.2.2 传递对象 2…

【K8s】Ingress的使用

文章目录 一、Ingress介绍1、Ingress的作用2、Ingress工作流程 二、Ingress使用1、测试数据准备2、HTTP代理3、HTTPS代理 一、Ingress介绍 1、Ingress的作用 上一章中&#xff0c;NotePort和LoadBalancer类型的Service可给集群外部机器提供访问&#xff0c;但这两种类型都有缺…

JavaScript数组

1.数组是什么 2.数组的基本使用 3.操作数组 4.数组案例 一、数组是什么&#xff1f; 1.数组(Array)是一种可以按顺序保存数据的数据类型2.为什么要使用数组&#xff1f;例如&#xff1a;如果想保存一个班所有同学的姓名怎么办&#xff1f;场景&#xff1a;如果有多个数据可以用…

vue3中ts定义对象,pinia中使用ts定义状态对象

文章目录 引入reactive中使用数组reactive中定义对象类型pinia中定义状态对象 引入 用惯了js&#xff0c;突然使用ts属实有点不习惯&#xff0c;这里介绍一下自己在vue3中使用ts初始化内容的一些小技巧 reactive中使用数组 例如下面所示的代码&#xff0c;我们就像写js代码一…

数组a与数组b作内积:即a和b所有对应位置两元素相乘 将所有的相乘结果(积)求和 numpy.inner(a,b)

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 数组a与数组b作内积&#xff1a; 即a和b所有对应位置两元素相乘 将所有的相乘结果(积)求和 numpy.inner(a,b) [太阳]选择题 请问关于以下代码的输出结果是&#xff1f; import numpy as np …

招银网络科技-2024届暑期实习-Java后端开发

目录 1.SpringBoot 中的 SpringBootApplication注解的作用是什么&#xff1f;2.SpringBoot 中你们是如何加载配置信息的&#xff1f;3.RabbitMQ 如何保证消息不丢失&#xff1f;4.如果消费者这边消费到一半宕机了怎么办&#xff1f;5.RabbitMQ 如何保证消息没有被重复消费&…

C语言函数大全-- w 开头的函数(3)

C语言函数大全 本篇介绍C语言函数大全-- w 开头的函数 1. wcsdup 1.1 函数说明 函数声明函数功能wchar_t *wcsdup(const wchar_t *str);用于复制宽字符字符串 参数&#xff1a; str &#xff1a; 待复制的宽字符串 返回值&#xff1a; 如果成功复制&#xff0c;则返回指向该…

跨域解决方案

同源策略 同源策略是一种约定&#xff0c;它是浏览器最核心也是最基本的安全功能&#xff0c;如果缺少了同源策略&#xff0c;浏览器很容易受到XSS、CSRF等攻击。 所谓的同源是指【协议域名端口】三者相同&#xff0c;即便两个不同的域名&#xff0c;指向同一个IP地址&#xf…

手把手教你下载darknet_ros

前两天下载darknet_ros&#xff0c;好怪啊&#xff0c;是我太菜了&#xff0c;根本看不懂这都啥啊&#xff0c;所以记录一下 首先附上链接 这里是github上的代码&#xff1a;https://github.com/leggedrobotics/darknet_ros 这里是gitcode上的代码&#xff1a;https://gitcode…

软件技术体系汇总-Spring篇

Spring源码学习总结 版本说明 系列文章是本人在学习 Spring 源码的过程中总结 Spring 版本&#xff1a;5.2.8.RELEASE 调试工具&#xff1a;IDEA2020.3 作者&#xff1a;虎哥 常见面试题 1. 什么是 Spring Framework &#xff1f; 官方文档&#xff1a; Spring makes it eas…

U-Mail邮件中继完美解决邮件超大附件发送难题

随着企业数字化转型的逐步深入&#xff0c;电子邮件成为了企业内部或与外部业务沟通交流的重要方式之一。但是我们在发送电子邮件的时候&#xff0c;如果邮件中包含工程设计图纸&#xff0c;视频文件、产品设计方案等超大附件&#xff0c;发送的邮件会被对方邮件服务器拒收&…