TypeScript(一)TypeScript下载安装,编译运行的三种方式:tsc命令行/webpack搭建环境/tsc-node库

news2024/9/21 4:31:53

什么是TypeScript?

TypeScript是拥有类型的JavaScript超集,它可以编译成普通、干净、完整的JavaScript代码。
简单理解:TypeScript就是加强版的JavaScript

TypeScript环境搭建

搭建前准备

  • TypeScript最终会被编译成JavaScript代码,那么我们必然需要对应的编译环境
    • 环境搭建前提NodeNPM
    • 安装TypeScript,之后就可以通过 tsc 来编译TypeScript的代码

首先来进行全局安装:

# 安装命令
npm install typescript -g

# 查看版本
tsc --version

在这里插入图片描述

方式一:命令行(cmd终端)

之后我们就可以进行简单测试了,新建main.ts文件,在下面

// 定义一个变量
let message: string = "abc";
message = "Hello World";

// 定义一个函数
function sum(num1: number, num2: number): number {
  return num1 + num2;
}

sum(20, 30);

1. 通过tsc编译TypeScript到JavaScript代码

将代码编译为JavaScript的代码,使用cmd终端或者命令行运行以下命令:

tsc main.ts

我们会发现,生成了一个index.js文件,并且其中的代码就是普通的JavaScript代码。
在这里插入图片描述

2. 在浏览器或者Node环境下运行JavaScript代码

和我们原先运行JavaScript代码方法是一样的

  • 方式一:使用node直接执行JavaScript代码;
  • 方式二:创建一个html文件,在其中引入index.js文件,并且在浏览器中进行测试;

问题:每次都这样测试会不会太麻烦了呢?

如果每次我们写完一个TypeScript代码都需要像上面的步骤一样,一点点去完成测试就会过于麻烦,我们可以怎么做呢?

  • 直接配置webpack,让webpack对我们编写的代码进行一个编译,并且自动引入编译后的js文件;
  • 而且webpack可以在代码修改后重新帮助我们进行编译,并且自动刷新浏览器,不需要手动操作;

方式二:Webpack搭建项目环境

为了我们之后的学习和使用方便,我们来配置一个webpack的环境:

  • 在环境中我们编写对应的TypeScript代码,让webpack自动帮助我们编译,并且在浏览器中查看结果

1. 项目环境的基础配置

1.1. 创建一个简单的项目目录结构

新建一个新的目录:LearnTypeScript,并且创建如下的目录结构

│ index.html
├─build
│      webpack.config.js
└─src
        main.ts

目录和文件夹结构分析:

  • index.html是跑在浏览器上的模块文件
  • build文件夹中用于存放webpack的配置信息
  • src用于存放我们之后编写的所有TypeScript代码

1.2. 使用npm管理项目的依赖

webpack本身需要有很多的依赖,并且之后我们也需要启动node服务来快速浏览index.html模板以及编译后的JavaScript代码。

我们要使用npm来初始化package.json文件:

npm init -y

npm init 对项目进行初始化操作,对包进行管理;-y 的含义:yes的意思,在init的时候省去了敲回车的步骤,生成的默认的package.json

1.3. 本地依赖TypeScript

为什么需要本地依赖TypeScript:

  • 因为我们之后是通过webpack进行编译我们的TypeScript代码的,并不是通过tsc来完成的。(tsc使用的是全局安装的TypeScript依赖)
  • 那么webpack会在本地去查找TypeScript的依赖,所以我们是需要本地依赖TypeScript的;

安装本地TypeScript依赖

npm install typescript

在这里插入图片描述

1.4. 初始化tsconfig.json文件

在进行TypeScript开发时,我们会针对TypeScript进行相关的配置,而这些配置信息是存放在一个tsconfig.json文件中的
我们并不需要手动去创建它,可以通过命令行直接来生成这样的一个文件:

tsc --init

在这里插入图片描述

1.5. 配置tslint来约束代码

为了让大家按照严格的TypeScript风格学习代码,这里我希望大家可以加入tslint

全局安装tslint:

npm install tslint -g

在项目中初始化tslint的配置文件:tslint.json

tslint -i

在这里插入图片描述

2. 项目环境的Webpack

下面我们开始配置webpack相关的内容

2.1. 安装webpack相关的依赖

使用webpack开发和打开,需要依赖webpack、webpack-cli、webpack-dev-server

npm install webpack webpack-cli webpack-dev-server -D

2.2 在package.json中添加启动命令

为了方便启动webpack,我们在package.json中添加如下启动命令

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "serve": "cross-env NODE_ENV=development webpack-dev-server --mode=development --config build/webpack.config.js"
},

自定义启动脚本

2.3 添加webpack的其他相关依赖

  • 依赖一:cross-env

这里我们用到一个插件 “cross-env” ,这个插件的作用是可以在webpack.config.js中通过 process.env.NODE_ENV 来获取当前是开发还是生产环境,我们需要这个插件:

npm install cross-env -D
  • 依赖二:ts-loader

因为我们需要解析.ts文件,所以需要依赖对应的loader:ts-loader

npm install ts-loader -D
  • 依赖三:html-webpack-plugin

编译后的代码需要对应的html模块作为它的运行环境,所以我们需要使用html-webpack-plugin来将它插入到对应的模板中:

npm install html-webpack-plugin -D

2.4 配置webpack.config.js文件

将如下配置到webpack.config.js文件中:

const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
  entry: "./src/main.ts",
  output: {
    filename: "build.js"
  },
  resolve: {
    extensions: [".tsx", ".ts", ".js"]
  },
  module: {
    rules: [{
      test: /\.tsx?$/,
      use: "ts-loader",
      exclude: /node_modules/
    }]
  },
  devtool: process.env.NODE_ENV === "production" ? false : "inline-source-map",
  devServer: {
    // webpack4配置devServer中用的是contentBase:“”;
    // webpack5需要替换成 static:“”
    // contentBase:"./dist" //指定(额外的)静态文件目录, // 如果使用 CopyWebpackPlugin ,设置为false
    static: "./dist",

    compress: false,
    host: "localhost",
    port: 8080
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: "./index.html"
    })
  ]
};

在这里插入图片描述

3. 项目环境下代码测试

下面我们就可以愉快的在main.ts中编写代码,之后只需要启动服务即可:
在这里插入图片描述

npm run serve

在这里插入图片描述
在浏览器中打开:http://localhost:8080/
在控制台可以看到打印
在这里插入图片描述
修改代码,直接可以看到修改后的效果:不需要手动进行任何刷新
在这里插入图片描述

方式三:ts-node

  • 安装ts-node
npm install ts-node -g
  • 另外ts-node需要依赖 tslib 和 @types/node 两个包
npm install tslib @types/node -g
  • 现在,我们可以直接通过 ts-node 来运行TypeScript的代码:
ts-node math.ts

在这里插入图片描述

在这里插入图片描述
这个就类似于用node运行Javascript

部分参考 coderwhy公众号

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

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

相关文章

JavaSE笔记——函数式编程(类库)

文章目录前言一、基本类型二、重载解析三、FunctionalInterface四、默认方法五、Optional总结前言 前面知道了如何编写 Lambda 表达式,下面将详细阐述另一个重要方面:如何使用 Lambda 表达式。即使不需要编写像 Stream 这样重度使用函数式编程风格的类库…

find_package()的使用

find_package()命令是用来查找依赖包的,理想情况下,一句find_package()把一整个依赖包的头文件包含路径、库路径、库名字、版本号等情况都获取到,后续只管用就好了。但实际中往往CMake失败就是出在find_package()的失败上(这里不考…

朝花夕拾 - 2023 莽一年

Hello 2023,我来了~今年,又是一个怎样的楚门世界,我要如何在里面撒泼,期待~一 回收 2022 不及格答卷 回首 2022,那真的不堪回首,细节太多了,没做好没把握住~但是,不管 2022 过得怎样…

Qt6 中如何使用 qsb

【写在前面】 Qt 5 的图形体系结构非常依赖 OpenGL 作为底层 3D 图形 API。但过去 8 年来随着 Metal 和 Vulkan 的推出,市场发生了巨大变化。现在,Qt 6 加入了大量不同平台的图形 API,以确保用户可以在所有平台上以最高性能运行 Qt。 在 Qt Q…

【类和对象(完结)】

目录 1. 再谈构造函数 1.1 构造函数体赋值 1.2 初始化列表 1.3 explicit关键字 2. static成员 2.1 概念 2.2 特性 3. 友元 3.1 友元函数 3.2 友元类 4. 内部类 5.匿名对象 6.拷贝对象时的一些编译器优化 7. 再次理解类和对象 8.总结 1. 再谈构造函数 1.1 构造函数体…

技术分享| 如何使用Prometheus实现系统进程监控

如何监控线上正在运营的系统?如何得知系统目前是正常还是异常? Prometheus是这么一套数据监控解决方案。它能让运维及开发人员随时掌控系统的运行状态,快速定位出现问题的位置,快速排除故障。只要按照 Prometheus的方式来做&#…

力扣刷题记录——258. 各位相加、263.丑数、268.丢失的数字

本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《258. 各位相加、263.丑数、268.丢失的数字》。 目录 25…

第三十五讲:神州无线局域网基础知识

1. IEEE 802.11协议 802.11无线标准家族包括802.11a/b/g/n/ac五个标准理论上可以提供高达每秒1Gbit的数据传输能力标准定义了如何使用免授权2.4 GHz 和 5GHz 频带的电磁波进行信号传输。 802.11无线标准家族 802.11a 802.11b 802.11g 802.11n 802.11ac 工作频段 5GHz 2…

内存访问为什么要分段?

内存分段是处理器为访问内存而设计的机制,称为内存分段机制。 简单的内存知识 内存结构(连续且地址依次升高) 访问方式 内存是随机读写设备,即访问其内部任何处,不需要从头开始找,只要直接给出其地址便可。…

【项目启动】IDEA新建项目同步到Github

文章目录SSH秘钥检查GitHub创建项目IDEA创建项目IDEA同步GitHubSSH秘钥检查 目前,github不支持https形式的远程同步方式,如果使用https形式进行同步会报以下错误: remote: Support for password authentication was removed on August 13, 2…

C# WinForm CAD文件显示(dxf,dwg显示)

找遍全网很难找到开源dxf显示控件(C# winform),大部分控件都需要收费,对于做软件开发很麻烦 C# WPF倒是有nefdxfZoomableCanvas可以实现,确实很方便,这个在github:https://github.com/shao200/WpfDxfViewer上也能找到开…

c++11 标准模板(STL)(std::deque)(六)

定义于头文件 <deque> std::deque 容量 检查容器是否为空 std::deque<T,Allocator>::empty bool empty() const; (C11 前) bool empty() const noexcept; (C11 起) (C20 前) [[nodiscard]] bool empty() const noexcept; (C20 起)检查容器是否无元素&#xff0c…

大数据NiFi(四):NiFi单节点安装

文章目录 NiFi单节点安装 一、介绍与下载 二、单节点安装

JavaWeb:JSP概述及原理

1&#xff0c;JSP概述 JSP&#xff08;全称&#xff1a;Java Server Pages&#xff09;&#xff1a;Java服务端页面。 是一种动态的网页技术&#xff0c;其中既可以定义 HTML、JS、CSS等静态内容&#xff0c;还可以定义 Java代码的动态内容&#xff0c;也就是 JSP HTML Java…

javaee之SpringMVC2

SpringMVC返回值类型以及响应数据类型 1.搭建环境 还是按照springMVC1中的搭建环境进行搭建。这里就不多说。 响应之返回值是String类型 我们先来创建一个User类 User,java package com.pxx.domain;import java.io.Serializable;public class User implements Serializab…

PS 矩形选区工具(1)基本用法 生成图层 选区方式演示讲解

我们先打开PS 然后打开一个项目 我们可以选择一个图层 然后 点击左上角 图像>调整>色相.饱和度 弹出操作框之后 我们拉动色相的色条 对应视图就会发生主体颜色的变化 然后 我们打开一个只有一个图层的图片项目 我们对这个图层操作 整个都会变化 但如果我只是想改其中…

后悔升级iPhone?教你如何把iOS15降回iOS14

还在使用betabeta版iOS 15和iPadOS 15吗&#xff1f;如果你出于某种原因准备返回稳定的iOS 14&#xff0c;本篇文章将会为你详细介绍如何从 iOS 15 beta版降级到 iOS 14&#xff0c;这对于有一定动手能力的人来说并不难。 如何从 iOS 15 beta版降级到 iOS 14 重要提示&#xf…

Spring是怎么回事?新手入门就看这篇吧

前言 今天壹哥给大家介绍一套开源的轻量级框架&#xff0c;它就是Spring。在给大家详细讲解Spring框架之前&#xff0c;壹哥先给大家介绍Spring框架的主要内容&#xff1a; Spring的基本概念 Spring核心思想之ioc Spring核心思想之aop Spring框架对事务的支持 在本系列文章…

解决前端如何使用插件crypto-js进行AES加密方式数据加密

一、问题 目录 一、问题 1.1 问题概述 1.2 操作过程描述 二、解决 2.1 说明 2.2 crypto-js安装 2.3 使用crypto-js 1.1 问题概述 如何进行加密和解密以及采用什么方式进行加密解密是本文主要解决的内容~ 之前有小伙伴问了关于加密解密的事&#xff0c;确实是的&#xff…

pdfbox / XSL + FOP 转换 PDF文档

XSL-FO是XSL Formatting Objects的缩写&#xff0c;它是一种用于文档格式的XML 置标语言。XSL-FO是XSL的一部分&#xff0c;而XSL是一组定义XML数据转换与格式的W3C技术。XSL的其他部分有XSLT与XPath。 XSL-FO是用于格式化XML数据的语言&#xff0c;全称为Extensible Styleshe…