当前位置: 首页 > news >正文

typescript快速入门之安装与运行

安装

安装ts环境,最好全局安装,这样就不需要开一个项目又安装

npm i -g typescript
初始化

可以运行初始化配置文件,也可以手动生成;不生成的话会运行默认配置

使用默认配置

  • 把ts文件转成js文件使用的是es3语言,语法是var这些
  • 生成的文件会在对应目录跟ts文件名一样的,如index.ts生成的是index.js,无法放入到指定的转换文件夹里面
  • 会造成命名重复,原因是假设当前环境在DOM环境中如果代码中没有模块化语句,默认代码是全局执行的,所以变量就是全局变量
    要最简单的解决,就是用模块化。
生成配置文件

默认生成

tsc --init // 运行该命令会在项目根目录生成一个tsconfig.json文件,里面是一些ts的默认配置

tsconfig.json文件部分内容

"compilerOptions": {"incremental": true, // 是否启用增量编译"tsBuildInfoFile": "./buildFile", // 增量编译文件的存储位置"diagnostics": true, // 打印诊断信息 "target": "ES5", // 目标语言的版本(指定编译 js 的版本)"module": "CommonJS", // 生成代码的模板标准"outFile": "./app.js", // 将多个相互依赖的文件生成一个文件,可以用在AMD模块中,即开启时应设置"module": "AMD""lib": ["DOM", "ES2015", "ScriptHost", "ES2019.Array"], // lib用于指定要包含在编译中的库文件"allowJS": true, // 允许编译器编译JS,JSX文件"checkJs": true, // 允许在JS文件中报错,通常与allowJS一起使用"outDir": "./dist", // 指定输出目录"rootDir": "./", // 指定输出文件目录(用于输出),用于控制输出目录结构"declaration": true, // 生成声明文件,开启后会自动生成声明文件"declarationDir": "./file", // 指定生成声明文件存放目录"emitDeclarationOnly": true, // 只生成声明文件,而不会生成js文件"sourceMap": true, // 生成目标文件的sourceMap文件(代码源文件)"inlineSourceMap": true, // 生成目标文件的inline SourceMap,inline SourceMap会包含在生成的js文件中"declarationMap": true, // 为声明文件生成sourceMap"typeRoots": [], // 声明文件目录,默认时node_modules/@types"types": [], // 加载的声明文件包"removeComments":true, // 在编译过程中删除文件中的注释"noEmit": true, // 不输出文件,即编译后不会生成任何js文件"noEmitOnError": true, // 发送错误时不输出任何文件"noEmitHelpers": true, // 不生成helper函数,减小体积,需要额外安装,常配合importHelpers一起使用"importHelpers": true, // 通过tslib引入helper函数,文件必须是模块"downlevelIteration": true, // 降级遍历器实现,如果目标源是es3/5,那么遍历器会有降级的实现"strict": true, // 开启所有严格的类型检查"alwaysStrict": true, // 在代码中注入'use strict'"noImplicitAny": true, // 不允许隐式的any类型"strictNullChecks": true, // 不允许把null、undefined赋值给其他类型的变量"strictFunctionTypes": true, // 不允许函数参数双向协变"strictPropertyInitialization": true, // 类的实例属性必须初始化"strictBindCallApply": true, // 严格的bind/call/apply检查"noImplicitThis": true, // 不允许this有隐式的any类型"noUnusedLocals": true, // 检查只声明、未使用的局部变量(只提示不报错)"noUnusedParameters": true, // 检查未使用的函数参数(只提示不报错)"noFallthroughCasesInSwitch": true, // 防止switch语句贯穿(即如果没有break语句后面不会执行)"noImplicitReturns": true, //每个分支都会有返回值"esModuleInterop": true, // 允许export=导出,由import from 导入"allowUmdGlobalAccess": true, // 允许在模块中全局变量的方式访问umd模块"moduleResolution": "node", // 模块解析策略,ts默认用node的解析策略,即相对的方式导入"baseUrl": "./", // 解析非相对模块的基地址,默认是当前目录"paths": { // 路径映射,相对于baseUrl// 如使用jq时不想使用默认版本,而需要手动指定版本,可进行如下配置"jquery": ["node_modules/jquery/dist/jquery.min.js"]},"rootDirs": ["src","out"], // 将多个目录放在一个虚拟目录下,用于运行时,即编译后引入文件的位置可能发生变化,这也设置可以虚拟src和out在同一个目录下,不用再去改变路径也不会报错"listEmittedFiles": true, // 打印输出文件"listFiles": true// 打印编译的文件(包括引用的声明文件)
}// 指定一个匹配列表(属于自动指定该路径下的所有ts相关文件)
"include": ["src/**/*"
],
// 指定一个排除列表(include的反向操作)"exclude": ["demo.ts"
],
// 指定哪些文件使用该配置(属于手动一个个指定文件)"files": ["demo.ts"
]

tsconfig.json解释:

  • compilerOptions : 这是一个对象,用于指定编译器应如何编译 TypeScript 代码。

  • compilerOptions 子选项:

    • target : 指定输出的 ECMAScript 目标版本,如 ES5、ES6/ES2015 等。这会影响到语法和功能上的编译。
    • module : 指定生成的模块代码系统,如 CommonJS、AMD、System、 UMD、ES6、ES2015、ESNext 等。
    • lib : 用来指定要包含在编译中的库文件。比如,如果你想使用 ES2015 的功能,但是又想要兼容 ES5,你就可以设置 “target”: “ES5” 和 “lib”: [“ES2015”] 。
    • outDir : 指定编译后的输出目录。
    • rootDir : 指定输入文件的根目录,用于控制输出目录结构。
    • strict : 启用所有严格类型检查选项。
    • esModuleInterop : 启用 ES6 模块的默认导入方式。
    • allowJs : 允许编译器编译 JavaScript 文件。
    • checkJs : 允许在 JavaScript 文件中报告错误。
    • sourceMap : 生成对应的 .map 文件。
    • noImplicitAny:是否允许使用隐式 any。
    • jsx:jsx 的处理方式(是否保留原有 jsx 格式,比如 react 中会转为 React.createElement())
    • include 和 exclude : 这两个选项用于指定编译器应包含哪些文件和排除哪些文件。
    • extends : 这个选项允许一个 tsconfig.json 文件继承另一个 tsconfig.json 文件的配置。
    • files 和 references : 这两个选项在项目引用中使用,用于设置项目间的依赖关 系。

手动生成

​ 在根目录建立tsconfig.json文件

文件配置

如果项目中指定了tsconfig.json文件,运行tsc不需要再指定文件路径地址,否则需要输入对的tsc [文件名]

{"compilerOptions": {"target": "ES2017", // 编译目标版本"lib":["ES2017","DOM","DOM.Iterable"], // 需要引用的库"outDir": "./dist" // 指定输出目录,如果未指定和对应的.ts文件同目录},"include": ["src/**/*.ts"] // 指定需要编译的文件或目录
}

运行

使用自带命令
tsc [文件名] // 把对应的ts文件转换成能输出的js文件,在对应的ts文件夹下面生成,会造成命名冲突,原因上面解释过
使用第三方库
方式一
// 全局或局部安装nodemon,这样只要你改变文件内容会自动输出
npm i -g nodemon
// 将ts代码在内存中完成编译,同时完成运行
npm i ts-node

在package.json里面scripts配置命令

{"scripts": {"start": "nodemon --exec ts-node src/index.ts"}
}
方式二
// 全局或局部安装,这样只要你改变文件内容会自动输出,但使用tsc命令编译文件会报错
npm i ts-node-dev
// 将ts代码在内存中完成编译,同时完成运行
npm i ts-node

在package.json里面scripts配置命令

{"scripts": {"dev": "tsnd --respawn src/index.ts"}
}

编辑器配置插件

VSCode

安装扩展

error lens --这个插件能够把错误直接显示到代码文件中的对应位置

相关文章:

typescript快速入门之安装与运行

安装 安装ts环境,最好全局安装,这样就不需要开一个项目又安装 npm i -g typescript初始化 可以运行初始化配置文件,也可以手动生成;不生成的话会运行默认配置 使用默认配置 把ts文件转成js文件使用的是es3语言,语…...

React源码解读

配置React源码本地调试环境 本次环境构建采用了node版本为16、react-scripts 版本号为 3.4.4,源码下载地址 react源码调试: react源码调试环境 使用 create-react-app 脚手架创建项目 npx create-react-app react-test 进入刚刚下载的目录,弹射 crea…...

【DeepSeek-R1】 API申请(火山方舟联网版)

DeepSeek-R1 API申请(火山方舟联网版) 1、新建联网版应用2、开通信息增强服务3、开启联网内容插件4、创建接入点5、获取模型名称6、获取API Key 如果第一次注册账号,请先按照文章《【Deepseek-R1】 API申请(火山方舟)》…...

负载均衡集群——LVS-DR配置

一、简介 1.1 什么是集群? 两台及以上的计算机完成一个任务的模式称为集群。 常见的集群类型包括: LB(负载均衡)集群:按照不同的算法将前端的访问转发给后端计算点,使节点负载相对平衡。提高并发能力 缺…...

数据结构篇

链表 用数组模拟链表,看该链表结构,有几个域则用几个数组分别存储 单链表是只知道下一个元素位置,双链表还知道上一个链表位置 单链表 双向链表 左移右移 栈 模拟栈 判断括号序列 队列 模拟队列 递归 集合和哈希 集合就是哈希表 哈希表的实现…...

「软件设计模式」建造者模式(Builder)

深入解析建造者模式:用C打造灵活对象构建流水线 引言:当对象构建遇上排列组合 在开发复杂业务系统时,你是否经常面对这样的类:它有20个成员变量,其中5个是必填项,15个是可选项。当用户需要创建豪华套餐A&…...

Matlab 机器人 雅可比矩阵

工业机器人运动学与Matlab正逆解算法学习笔记(用心总结一文全会)(四)——雅可比矩阵_staubli机器人正逆向运动学实例验证matlab-CSDN博客 matlab求雅可比矩阵_六轴机械臂 矢量积法求解雅可比矩阵-CSDN博客 (63 封私信 / 80 条消息…...

DeepSeek 助力 Vue 开发:打造丝滑的面包屑导航(Breadcrumbs)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...

IntelliJ IDEA 2024.1.4版无Tomcat配置

IntelliJ IDEA 2024.1.4 (Ultimate Edition) 安装完成后,调试项目发现找不到Tomcat服务: 按照常规操作添加,发现服务插件中没有Tomcat。。。 解决方法 1、找到IDE设置窗口 2、点击Plugins按钮,进入插件窗口,搜索T…...

chrome://version/

浏览器输入: chrome://version/ Google浏览器版本号以及安装路径 Google Chrome131.0.6778.205 (正式版本) (64 位) (cohort: Stable) 修订版本81b36b9535e3e3b610a52df3da48cd81362ec860-refs/branch-heads/6778_155{#8}操作系统Windows…...

知识图谱数据库 Neo4j in Docker笔记

下载 docker pull neo4j:community官方说明 https://neo4j.com/docs/operations-manual/2025.01/docker/introduction/ 启动 docker run \--restart always \--publish7474:7474 --publish7687:7687 \--env NEO4J_AUTHneo4j/your_password \--volumeD:\files\knowledgegrap…...

【动手学强化学习】02多臂老虎机

问题定义 强化学习关注的是在于环境交互中学习,是一种试错学习的范式。在正式进入强化学习之前,我们先来了解多臂老虎机问题。该问题也被看作简化版的强化学习,帮助我们更快地过度到强化学习阶段。 有一个拥有 K K K 根拉杆的老虎机&#…...

【网络编程】之Udp网络通信步骤

【网络编程】之Udp网络通信步骤 TCP网络通信TCP网络通信的步骤对于服务器端对于客户端 TCP实现echo功能代码实现服务器端getsockname函数介绍 客户端效果展示 对比两组函数 TCP网络通信 TCP网络通信的步骤 对于服务器端 创建监听套接字。(调用socket函数&#xff…...

Java 基于 SpringBoot+Vue 的家政服务管理平台设计与实现

博主介绍:✌程序员徐师兄、8年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战*✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅&#x1f447…...

架构——Nginx功能、职责、原理、配置示例、应用场景

以下是关于 Nginx 的功能、职责、原理、配置示例、应用场景及其高性能原因的详细说明: 一、Nginx 的核心功能 1. 静态资源服务 功能:直接返回静态文件(如 HTML、CSS、JS、图片、视频等)。配置示例:server {listen 80…...

Spring Boot中使用Flyway进行数据库迁移

文章目录 概要Spring Boot 集成 FlywayFlyway 其他用法bug错误Flyway版本不兼容数据库存在表了Flyway 的校验和(Checksum)不匹配 概要 在 Spring Boot 项目开发中,数据库的变更不可避免。手动执行 SQL 脚本不仅容易出错,也难以维…...

CAS单点登录(第7版)9.属性

如有疑问,请看视频:CAS单点登录(第7版) 属性 属性定义 概述 属性定义 从身份验证或属性存储库源获取和解析 CAS 中属性的定义时,往往使用其名称进行定义和引用,而无需任何其他元数据或修饰。例如&#…...

137,【4】 buuctf web [SCTF2019]Flag Shop

进入靶场 都点击看看 发现点击work会增加¥ 但肯定不能一直点下去 抓包看看 这看起来是一个 JWT(JSON Web Token)字符串。JWT 通常由三部分组成,通过点(.)分隔,分别是头部(Header&…...

P9853 [入门赛 #17] 方程求解

P9853 [入门赛 #17] 方程求解 - 洛谷 题目描述 小A有n个关于x的方程,第i个方程形如ai​xi​bi​ci​。方程的解x均为正整数,例如下面几个方程都是符合要求的方程: 2x 4 10 -3x 13 10 4x - 8 16 其中,第一组方程的解为x1​…...

【网络安全 | 漏洞挖掘】跨子域账户合并导致的账户劫持与删除

未经许可,不得转载。 文章目录 概述正文漏洞成因概述 在对目标系统进行安全测试时,发现其运行着两个独立的域名——一个用于司机用户,一个用于开发者/企业用户。表面上看,这两个域名各自独立管理账户,但测试表明它们在处理电子邮件变更时存在严重的逻辑漏洞。该漏洞允许攻…...

别再折腾虚拟机了!Win11下用WSL2搞定FreeSurfer 7.1.0,从MRI到3D头模型一条龙

在Windows 11上构建神经影像分析流水线:WSL2与FreeSurfer的完美结合 神经影像研究领域的工作者常常面临一个困境:日常办公依赖Windows生态,而专业工具链却大多基于Linux系统。传统解决方案如虚拟机或双系统不仅资源占用高,还存在文…...

FPA功能点分析实战:我们如何用它为团队节省了20%的预算,并说服了客户

FPA功能点分析实战:我们如何用它为团队节省了20%的预算,并说服了客户 当客户第三次提出"小范围需求调整"时,会议室里的空气凝固了。作为项目负责人,我看着团队疲惫的眼神和不断膨胀的甘特图,意识到必须改变这…...

shell命令和linux命令的区别

shell命令和linux命令的区别:shell是运行在Linux系统上的一个脚本语言,是一个用C语言编写的程序,而linux命令是对linux系统进行管理的命令。shell可以重复或批量地进行一些命令,也可以把重复执行的命令写到脚本里面执行,而linux命…...

【1人公司】【自研】上架可收款的微信小程序全流程

上架可收款的微信小程序全流程小编初心小编背景步骤✅腾讯的WorkBuddy写一整个前端后端数据库项目安装项目代码运行所需的环境(如下)内网穿透,让公网上的人能访问我的前端服务和后端服务 [Cpolar](https://www.cpolar.com)✅微信认证-想要他人…...

河马云神低空气象预测服务:搞定低空 “天气玄学”,做靠谱的空中 “引路人”

说起天气预报,咱们早就习惯了手机上一划的 “晴雨预告”,但你有没有过这种糟心时刻?无人机刚起飞就撞上湍流晃得厉害,植保作业刚喷药就遇上突发大风,高速路段莫名起团雾逼得车流缓行…… 这些问题的根源,都…...

代码坏味道自动化检测:从设计原理到工程实践

1. 项目概述:一个“嗅觉”代码检查器的诞生在代码审查和日常开发中,我们常常会遇到一些“闻起来不对劲”的代码。它们可能语法完全正确,也能通过编译,但结构臃肿、逻辑混乱、命名随意,就像房间里弥漫着一股若有若无的异…...

别再以为蓝牙绝对安全了:用Kali Linux的hciconfig和hcitool,我发现了邻居的汽车OBD接口

蓝牙安全探秘:从日常设备到汽车OBD的潜在风险 1. 蓝牙技术的安全现状与普遍认知误区 蓝牙技术已经渗透到我们生活的方方面面,从无线耳机到智能家居,再到汽车电子系统。然而,大多数用户对蓝牙安全性的认知仍停留在"配对即安全…...

ruoyi-qs-nvr —— 企业级全协议视频融合中台

泉视互联 视界无界 | 基于 RuoYi-Cloud Alibaba 的下一代微服务监控架构 🌌 项目愿景 本项目不仅仅是一个 NVR 系统,而是一个视频物联网接入平台 。旨在打破品牌壁垒,通过微服务架构解决海量设备接入、低延迟传输与复杂业务管理的痛点&…...

避坑指南:GEE中做Sen+MK趋势分析时,你可能忽略的3个关键细节与优化技巧

GEE中SenMK趋势分析的深度优化:避开统计陷阱与计算瓶颈 当你在Google Earth Engine(GEE)中运行完Sen斜率计算和Mann-Kendall(MK)检验,看着地图上那些彩色斑块时,是否曾怀疑过这些结果的可靠性&a…...

基于MCP与Cloudflare Workers构建AI编程助手的长期记忆系统

1. 项目概述 如果你和我一样,每天都要和 Claude、ChatGPT、Cursor 这些 AI 编程助手打交道,那你一定也受够了它们“金鱼般”的记忆力。昨天刚花半小时解释清楚的项目架构,今天再问,它又得从头开始理解;上周踩过的一个…...