Node.js 与 TypeScript

目录

1、什么是 TypeScript

2、运行TypeScript

3、TypeScript 在Node.js 生态中的情况


1、什么是 TypeScript

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

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

示例:

// example.ts
type User = {
  name: string;
  age: number;
};
function isAdult(user: User): boolean {
	return user.age >= 18;
}
const justine: User = {
  name: 'Justine',
  age: 23,
};
const isJustineAnAdult: boolean = isAdult(justine);

第一部分(带有type关键字)负责声明表示用户的自定义对象类型。

稍后,我们使用这个新创建的类型来创建函数isAdult,该函数接受一个User类型的参数并返回布尔值。在此之后,我们创建justine,这是我们的示例数据,可用于调用先前定义的函数。最后,我们创建了一个新的变量,其中包含justine是否是成年人的信息。

关于这个例子

首先,如果我们不遵守声明的类型,TypeScript会提醒我们有问题,并防止滥用。

其次,并不是所有的东西都必须显式键入-TypeScript非常聪明,可以为我们推导类型。例如,变量isJustineAnAdult的类型是boolean,即使我们没有显式键入它,或者justine将是我们函数的有效参数,即使我们不将该变量声明为User类型。

2、运行TypeScript

我们如何运行它?

首先要做的是在我们的项目中安装TypeScript:

npm i -D typescript

现在我们可以在终端中使用tsc命令将其编译为JavaScript。

npx tsc example.ts

转换的结果如下所示:

// example.js
function isAdult(user) {
  return user.age >= 18;
}
var justine = {
  name: 'Justine',
  age: 23,
};
var isJustineAnAdult = isAdult(justine);

这里的npx代表节点包执行。该工具允许我们运行TypeScript的编译器,而无需全局安装

tsc是TypeScript编译器,它将获取我们的TypeScript代码并将其编译为JavaScript。这个命令将产生一个名为example.js的新文件,我们可以使用Node.js运行它。现在,当我们知道如何编译和运行TypeScript代码时,让我们看看TypeScript的预防bug功能!

type User = {
  name: string;
  age: number;
};

function isAdult(user: User): boolean {
	return user.age >= 18;
}

const justine: User = {
  name: 'Justine',
  age: 'Secret!', 
};

const isJustineAnAdult: string = isAdult(justine, "hello world");

上面代码会给我们报3个错误:

  1. 第12行中,不能将类型“string”分配给类型“number”
  2. 第15行中,不能将类型“boolean”分配给类型“string”
  3. 第15行中,应有一个参数,但实际上传了2个参数

TypeScript提供了许多其他很棒的机制,如接口、类、实用程序类型等。此外,在更大的项目中,您可以在一个单独的文件中声明TypeScript编译器配置,并对其工作方式、严格程度以及存储编译文件的位置进行粒度调整。如果想了解更多,我们可以去官网文档中进行查看,地址(
https://www.typescriptlang.org/docs/)

TypeScript值得一提的其他一些好处是,它可以被逐步采用,它有助于使代码更具可读性和可理解性,并允许开发人员在为旧的Node.js版本提供代码时使用现代语言功能。

3、TypeScript 在Node.js 生态中的情况

TypeScript在Node.js世界中已经很成熟,许多公司、开源项目、工具和框架都在使用它。使用TypeScript的开源项目的一些值得注意的例子是:

  • NestJS - 强大且功能齐全的框架,使创建可扩展且架构良好的系统变得轻松愉快
  • TypeORM - 伟大的ORM受到其他语言的其他知名工具的影响,如Hibernate、Doctrine或Entity Framework
  • Prisma - 下一代ORM,具有声明性数据模型、生成的迁移和完全类型安全的数据库查询
  • RxJS - 广泛用于反应式编程的库
  • AdonisJS - 一个具有Node.js的功能齐全的web框架
  • FoalTs - 优雅的Nodejs框架

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot+@Validate+全局异常拦截实现自定义规则参数校验(校验get请求参数不能为空且在指定枚举类型中)

场景 SpringBootValidated实现参数验证(非空、类型、范围、格式等)-若依前后端导入Excel数据并校验为例: SpringBootValidated实现参数验证(非空、类型、范围、格式等)-若依前后端导入Excel数据并校验为例_validated 怎么设置boolean类型非空_霸道流氓气质的博客-…

公司新来的00后真是卷王,工作没两年,跳槽到我们公司起薪18K都快接近我了

都说00后躺平了,但是有一说一,该卷的还是卷。这不,前段时间我们公司来了个00后,工作都没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。…

瑞云渲染农场怎么用,瑞云渲染多少钱一分钟?

Renderbus瑞云渲染农场作为亚洲前沿的 云渲染平台,一直以“做最好的云渲染工具”为愿景,紧跟CG行业的技术创新与发展,致力于提供专业可靠、安全稳定、可持续创新的云渲染解决方案,助力推动行业快速发展,被誉为中国云渲…

【2023/05/10】Mitchel Resnick

Hello!大家好,我是霜淮子,2023倒计时第5天。 Share Her wistful face haunts my dreams like the rain at night. 译文: 她的热切的脸,如夜雨似的,搅扰着我的梦魂。 Once we dreamt that we were stra…

支付系统设计三:渠道网关设计06-业务处理

文章目录 前言一、业务服务工厂二、业务处理服务1. 业务处理服务2. 业务处理抽象服务3. 流量控制4. 报文提交4.1 获取交易的服务端通讯列表4.2 循环请求支付渠道4.2.1 报文组装4.2.2 报文发送4.2.2.1 协议处理器获取4.2.2.2 构建通讯客户端4.2.2.3 发送请求4.2.2.4 响应报文读取…

股票量价关系基础知识2

内盘与外盘 外盘,是指在一个交易日获某段交易时间内,买方主动提价以委卖价成交的股数之和,也称为主动性买盘 内盘,是指在一个交易日获某段交易时间内,卖方主动降价以委买价成交的股数之和,也称主动性卖盘。…

中文润色ai-ai原创文章生成器

在现代社会,每天都有大量的中文文章被发布到互联网上,这些文章的质量和可读性直接影响着读者的阅读体验和文章的传播效果。为了让文章更加美好,越来越多的人开始尝试使用中文润色ai技术。 中文润色ai是一种先进的人工智能技术,它能…

数字图像处理-matlab图像内插

matlab图像内插 最近邻插值双线性插值双三次插值总结 最近邻插值 目标各像素点的灰度值代替源图像中与其最邻近像素的灰度值 参考博客 假设一个2X2像素的图片采用最近邻插值法需要放大到4X4像素的图片,右边该为多少? 最近邻插值法坐标变换计算公式&…

Vue核心 列表渲染 数据监视

1.13.列表渲染 1.13.1.基本列表 v-for指令 用于展示列表数据语法&#xff1a;&#xff0c;这里key可以是index&#xff0c;更好的是遍历对象的唯一标识可遍历&#xff1a;数组、对象、字符串&#xff08;用的少&#xff09;、指定次数&#xff08;用的少&#xff09; <!…

Kubesphere流水线实现蓝绿发布

Kubesphere流水线实现蓝绿发布 1. Gitlab仓库准备 1.1 创建仓库 新建空白项目,名字随便取 greenweb复制克隆地址 http://192.168.31.199/deploy/greenweb.git1.2 初始化并上传代码 克隆并初始化代码仓库 mkdir git cd git git clone http://192.168.31.199/deploy/green…

【嵌入式烧录刷写文件】-2.3-删除/修改Intel Hex文件中指定地址范围内的数据

案例背景&#xff08;共6页精讲&#xff09;&#xff1a; 有如下一段HEX文件&#xff0c;如何“自动”地完成地址范围0x9110-0x9113数据的删除或修改。 :2091000058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775F :2091200078797A7B7C7D7E7F808182838485…

一觉醒来Chat gpt就被淘汰了

目录 什么是Auto GPT&#xff1f; 与其他语言生成模型相比&#xff0c;Auto GPT具有以下优点 Auto GPT的能力 Auto GPT的能力非常强大&#xff0c;它可以应用于各种文本生成场景&#xff0c;包括但不限于以下几个方面 Auto GPT的历史 马斯克说&#xff1a;“ChatGPT 好得吓…

记csdn打不开或打开缓慢后的修复--如何查找dns并修改hosts文件

记csdn打开缓慢后的修复–如何查找dns并修改hosts文件 问题&#xff1a; CSDN文章打开的十分缓慢&#xff0c;经常出现无法打开页面的错误提示 &#xff08;以前用的好好的&#xff0c;现在不知道公司局域网改了什么东西&#xff0c;导致我的电脑打开CSDN经常缓慢好久&#x…

Lesson14 高级IO

前言 IO 等待 数据拷贝,比如read/recv,write/send只要在单位事件里,让等的比重减低,IO的效率就越高 五种IO模型 钓鱼小案例 阻塞式 阻塞式: 张三拿着一根鱼竿,一直在岸边钓鱼,期间一直盯着鱼竿,等待鱼上钩 非阻塞式轮询式 非阻塞式轮询式: 李四拿着一根鱼竿,在岸边钓鱼,期…

Linux共享库、动态库详解

目录 一.静态库 二.动态库 三.静态库的制作与使用 四.动态库的制作与使用 在日常编程中我们不想让别人看到我们写的源码&#xff0c;但还需要发给对方使用&#xff0c;在这种情况下我们引入了静态库动态库&#xff0c;让对方用调库的方式也可以实现我们写的代码的功能&…

Android电源管理介绍

一、电源管理基础知识 1.1电源管理的几种状态 Android kernel源码中&#xff0c;定义了三种电源状态&#xff0c;在kernel/power/suspend.c中&#xff1a; 对应的宏定义/include/linux/suspend.h 1.2 电源管理状态的介绍&#xff1a; PM_SUSPEND_ON 设备处于正常工作状态 …

vue2 框架运行原理剖析系列(一)之 new Vue()实例化过程到底做了什么!!!

一、vue 基础用法 1.1 引入vue 1.2 使用vue语法编写ui 1.3 实现数据绑定 示例代码如下 <div id"app">{{ message }} </div> <script> var app new Vue({el: #app,data: {message: Hello Vue!} }) </script>1.4 代码效果&#xff1a;使用浏…

Nessus 10.5 Auto Install for macOS Ventura(自动化安装 Nessus 试用版)

发布 Nessus 试用版自动化安装程序&#xff0c;支持 macOS Ventura、RHEL 9 和 Ubuntu 22.04 请访问原文链接&#xff1a;https://sysin.org/blog/nessus-auto-install-for-macos/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.o…

js实现产品页点击小图在大图区显示

企业网站产品图片可能会比较多&#xff0c;需要在产品页面多放几张展示图片&#xff0c;我们可以使用一张大图几张小图的形式排列&#xff0c;并使用js代码实现点击小图显示大图。效果如下所示 html代码部分&#xff1a; <div class"img_bd"> <img src"…

linux0.12-8-7-signal.c

[334页] (-:这一小节很难理解。但我基本都理解了&#xff0c;哈哈。 1、为什么signal不可靠&#xff0c;而sigaction可靠&#xff1b; 2、 为什么系统调用会被打断&#xff1f; 3、 sys_signal&#xff0c;sys_sigaction&#xff0c;函数作用&#xff1f; 4、 do_signal&#x…