如何在Node.js和Express中设置TypeScript(2023年)

如何在Node.js和Express中设置TypeScript(2023年)

在这篇文章中,我们将介绍在Express应用程序中设置TypeScript的最佳方法,了解与之相关的基本限制。

文章目录

  • 如何在Node.js和Express中设置TypeScript(2023年)
    • 创建初始文件夹和package.json
    • 安装TypeScript和其他依赖项
    • 生成tsconfig.json文件
    • 使用.ts扩展名创建一个Express服务器
    • 监听文件更改并构建目录
    • 运行代码

创建初始文件夹和package.json

mkdir node-express-typescript
cd node-express-typescript
npm init --yes

在初始化package.json文件之后,新创建的文件可能会像下面的代码一样:

{"name": "Your File Name","version": "1.0.0","description": "","main": "index.ts", // 将入口点从js更改为.ts"scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"type": "module","keywords": [],"author": "","license": "ISC"
}

安装TypeScript和其他依赖项

npm install express mongoose cors mongodb dotenv
npm install  -D typescript ts-node-dev @types/express @types/cors

生成tsconfig.json文件

npx tsc --init

上述命令将生成一个名为tsconfig.json的新文件,其中包含以下默认的编译器选项:

target: es2016
module: commonjs
strict: true
esModuleInterop: true
skipLibCheck: true
forceConsistentCasingInFileNames: true
  • 在打开tsconfig.json文件后,您会看到许多其他被注释掉的编译器选项。在tsconfig.json中,compilerOptions是一个必填字段,需要指定。

    • 将rootDir和outDir设置为src和dist文件夹
{"compilerOptions": {"outDir": "./dist"// other options remain same}
}

使用.ts扩展名创建一个Express服务器

创建一个名为index.ts的文件并打开它

import express, { Express, Request, Response , Application } from 'express';
import dotenv from 'dotenv';//For env File 
dotenv.config();const app: Application = express();
const port = process.env.PORT || 8000;app.get('/', (req: Request, res: Response) => {res.send('Welcome to Express & TypeScript Server');
});app.listen(port, () => {console.log(`Server is Fire at http://localhost:${port}`);
});

监听文件更改并构建目录

npm install  nodemon

安装这些开发依赖项后,更新package.json文件中的脚本:

{"scripts": {"build": "npx tsc","start": "node dist/index.js","dev": "nodemon index.ts"}
}

运行代码

npm run dev 

如果一切正常,您将在控制台中看到以下消息:
Server is Fire at http://localhost:8000

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

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

相关文章

中国城市数字经济发展对环境污染的影响及机理研究(2011-2021年)

参照张翱祥(2022)的做法,本团队对来自南方经济《中国城市数字经济发展对环境污染的影响及机理研究》一文中的基准回归部分进行复刻 参考赵涛(2020)计算,PM2.5根据Atmospheric Composition Analysis Group计…

案例033:基于微信小程序的商品展示系统设计与实现

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

828. 统计子串中的唯一字符 --力扣 --JAVA

题目 我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符,并返回唯一字符的个数。 例如:s "LEETCODE" ,则其中 "L", "T","C","O","D" 都是唯一字符&#xf…

巴菲特清仓Paytm,亏损62亿卢比

KlipC报道:伯克希尔哈萨韦清仓其在印度“支付宝”Paytm的股份。 KlipC的合伙人Andi D表示:“据公开资料显示,伯克希尔.哈萨韦于2018年斥3亿美元巨资收购Paytm2.6%的股份,沃伦巴菲特公司于2021年出售Paytm 价值3600万美元的股份&am…

ConcurrentHashMap底层原理以及它 为什么是线程安全的,底层具体实现

文章目录 ConcurrentHashMap 为什么是线程安全的?ConcurrentHashMap 底层具体实现知道吗?实现原理是什么?ConcurrentHashMap 的整体架构**ConcurrentHashMap 的基本功能**ConcurrentHashMap 在性能方面做的优化** 今天来和大家谈谈&#xff0…

卡码网语言基础课 | 14. 链表的基础操作Ⅱ

题目: 构建一个单向链表,链表中包含一组整数数据,输出链表中的第 m 个元素(m 从 1 开始计数)。 要求: 1. 使用自定义的链表数据结构 2. 提供一个 linkedList 类来管理链表,包含构建链表、输出…

【多属性对象“{a:1,b:2}”】与【单属性对象的数组“[{a:1},{b:2}]”】的相互转换

前端开发的某些场景(比如用echarts开发某些可视化图表)经常需要将【多属性对象,如“{a:1,b:2}”】与【单属性对象的数组,如“[{a:1},{b:2}]”】做相互转换,以下是不通过循环,简洁实现这种转换的方法&#x…

支持向量机的算法原理

支持向量机(Support Vector Machine,简称SVM)是机器学习领域中一种常用的分类算法,它基于统计学习理论和结构风险最小化原则,具有很强的理论基础和良好的分类性能。本文将详细介绍支持向量机的算法原理,并解…

【C语言】优化通讯录管理系统2

本篇博客是基于上一篇博客写出来的,了解上一篇博客 大家好,我是苏貝,本篇博客带大家再次优化上一篇的通讯录,实现将录入的数据在程序退出后存储到文件中,在下一次程序开始时打开文件获取数据,如果你觉得我写…

好用到难以置信的全域BI:揭秘店铺服务从优秀到卓越的3个办法

双11刚结束,一些平时易忽略的问题被放大出来,发现问题不可怕,可怕的是无视。如果您还没想好接下来怎么调整,本篇介绍的「全域BI-服务」定会给您一些思路。 过往,传统客服服务的管理仍停留于人工操作阶段,企…

冯·诺依曼体系结构和操作系统

目录 一、冯诺依曼体系结构 1、初见结构 2、对体系结构的理解 3、总结 二、操作系统 1、概念 2、作用 一、冯诺依曼体系结构 1、初见结构 数学家冯诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成&#xff08…

在 Next 14 的 appRouter 模式中接入 React-Redux

在 Next 14 的 appRouter 模式中接入 React-Redux 说明 Next.js 版本升级到 14 后,相比 13 版本是一个改动很大的大版本升级,很多概念或者使用方式 13 版本都有较大的区别,因此这里记录一些学习 14 版本的 Next.js 的心得体会或者问题。因为…

LeetCode491. Non-decreasing Subsequences

文章目录 一、题目二、题解 一、题目 Given an integer array nums, return all the different possible non-decreasing subsequences of the given array with at least two elements. You may return the answer in any order. Example 1: Input: nums [4,6,7,7] Output…

sqli-labs(5)

23. 判断是注释符被过滤了我们用‘1’‘1来闭合后面的’ 这里不能使用order by来判断列数直接通过union select来判断 -1 union select 1,2,3 and 11 -1 union select 1,(select group_concat(table_name) from information_schema.tables where table_schemasecurity) ,3 an…

如何使用cpolar+Jellyfin自建私人影音平台【内网穿透】

🎥 个人主页:深鱼~ 🔥收录专栏:cpolar 🌄欢迎 👍点赞✍评论⭐收藏 文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpo…

Java[list/set]通用遍历方法之Iterator

//原始for遍历是用索引来进行遍历 但是现在我们的set集合里面是没有索引的 //所以原先的普通for遍历只能在list遍历中进行//以下的三种遍历方法可以在list和set两种类型中去使用 //—————————————————————————————————————————————…

SpringBoot参数校验@Validated和@Valid的使用

1、Validated和Valid区别 Validated:可以用在类、方法和方法参数上。但是不能用在成员属性(字段)上Valid:可以用在方法、构造函数、方法参数和成员属性(字段)上 2、引入依赖 Spring Boot 2.3 1 之前&…

Linux多线程基本概念

目录 ​编辑 1.什么是进程,线程,并发,并行 优点 缺点 什么资源是线程应该私有的呢 为什么线程切换成本更低呢 3.线程控制 pthread_create lpthread选项 makefile 代码实现 ps -aL 什么是LWP 轻量级进程ID与进程ID之间的区别 LWP与pthr…

软件测试行情堪忧,测试行业将迎来低谷?

前两天跟一个HR朋友聊天,她表示刚在boss上发布了一个普通测试岗位,不到一小时竟然收到了几百份简历。而且简历质量极高,这是往年不敢想象的。岗位少,竞争激烈,这是今年软件测试就业的真实写照,也是所有岗位…

SWT技巧

实现控件的刷新 问题可以简化如下,点击上方按钮,使下方按钮移动,但要求在监听事件里新建按钮对象,而不是使用原来的按钮(原来的按钮被移除了)。 解决代码如下: public class TestUI {protecte…