首页 > 其他分享 >TypeScript基本介绍与开发环境

TypeScript基本介绍与开发环境

时间:2023-07-06 22:23:19浏览次数:47  
标签:文件 TypeScript babel ts 介绍 编译 webpack 开发 true

TypeScript基本介绍与开发环境

TypeScript官网

TypeScript简介

  1. TypeScript是JavaScript的超集
  2. 它对JS进行了扩展,向JS中引入了类型的概念,并添加了许多新的特性
  3. TS代码需要通过编译器编译为JS,然后再交由JS解析器执行
  4. TS完全兼容JS,换言之,任何的JS代码都可以直接当成JS使用

相较于JS而言,TS拥有了静态类型,更加严格的语法,更强大的功能;TS可以在代码执行前就完成代码的检查,减小了运行时异常的出现的几率;TS代码可以编译为任意版本的JS代码,可有效解决不同JS运行环境的兼容问题;同样的功能,TS的代码量要大于JS,但由于TS的代码结构更加清晰,变量类型更加明确,在后期代码的维护中TS却远远胜于JS

TypeScript是一种由微软开发的自由和开源的编程语言。是JavaScript的一个超集。它在保留JavaScript语言本身特性的基础上添加了大量静态语言具有的一些特性,包括但不限于以下几点:

  • 可选的静态类型
  • 枚举、接口和类
  • 命名空间
  • 模块
  • Lambda表达式
  • 编译时类型检查

在2013年6月微软正式发布了0.9版。之后在不断更新的过程中逐渐支持ECMAScript 2015(ES6)标准

通过利用静态语言的特性和新标准,使JavaScript开发变得越来越简单。同时也很好的符合当前前端开发的模块化、工程化的开发方式和潮流。

环境搭建

  1. 安装nodejs,参考 Nodejs介绍与安装

  2. 安装vscode,参考 vscode安装_扩展安装

  3. 使用npm全局安装typescript

    • 进入命令行
    • 输入:npm i -g typescript
  4. 创建一个ts文件

  5. 使用tsc对ts文件进行编译

    • 进入命令行
    • 进入ts文件所在目录
    • 执行命令:tsc xxx.ts

不建议在全局安装typescript 即不建议使用命令 npm install -g typescript,建议在每个项目的node_modules中引入typescript,这样每个项目可以指定版本

编译配置

自动编译文件

  tsc xxx.ts -w

自动编译整个项目

  • 在项目根目录下创建一个ts的配置文件 tsconfig.json
  • tsconfig.json是一个JSON文件,添加配置文件后,只需只需tsc命令即可完成对整个项目的编译

tsconfig.json是ts编译器的配置文件,ts编译器可以根据它的信息来对代码进行编译

tsconfig.json示例:

{
// "include" 用来指定哪些ts文件需要被编译 **表示任意目录 *表示任意文件
  "include": [
    "./src/**/*"
  ],

// "exclude" 不需要被编译的文件目录 默认值:["node_modules", "bower_components", "jspm_packages"]
//  "exclude": [
//    "./src/hello/**/*"
//  ]

// 定义被继承的配置文件 当前配置文件中会自动包含config目录下base.json中的所有配置信息
// "extends": "./configs/base"

// 指定被编译文件的列表,只有需要编译的文件少时才会用到
// "files": ["./src/core.ts","./src/sys.ts"]

 // compilerOptions 编译器的选项
  "compilerOptions": {
    // target 用来指定ts被编译为的ES的版本
    // 'es3', 'es5', 'es6', 'es2015', 'es2016', 'es2017', 'es2018', 'es2019', 'es2020', 'esnext'
    "target": "es2015",

    // module 指定要使用的模块化的规范
    // 'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015', 'es2020', 'esnext'
    "module": "es2015",

    // lib用来指定项目中要使用的库
    //'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'es2018', 'es2019', 'es2020', 'esnext', 'dom' ...
//    "lib": ["es6", "dom"]

    // outDir 用来指定编译后文件所在的目录
    "outDir": "./dist",

   // 指定代码的根目录,默认情况下编译后文件的目录结构会以最长的公共目录为根目录,通过rootDir可以手动指定根目录
   // "rootDir": "./src",

    // 将代码合并为一个文件
    // 设置outFile后,所有的全局作用域中的代码会合并到同一个文件中
    //"outFile": "./dist/app.js"

    // 是否对js文件进行编译,默认是false
//    "allowJs": true,

    // 是否检查js代码是否符合语法规范,默认是false
//    "checkJs": true,

    // 是否移除注释
    "removeComments": true,

    // 不生成编译后的文件
    "noEmit": false,

    // 当有错误时不生成编译后的文件
    "noEmitOnError": true,

    // 所有严格检查的总开关
    "strict": true,

    // 用来设置编译后的文件是否使用严格模式,默认false
    "alwaysStrict": true,

    // 不允许隐式的any类型
    "noImplicitAny": true,

    // 不允许不明确类型的this
    "noImplicitThis": true,

    // 严格的检查空值
    "strictNullChecks": true,

    // 严格检查bind、call和apply的参数列表
    "strictBindCallApply": true,

    // 严格检查函数的类型
    "strictFunctionTypes": true,
    
    // 严格的空值检查
    "strictNullChecks": true,

    // 严格检查属性是否初始化
    "strictPropertyInitialization": true,

    // 检查switch语句包含正确的break
    "noFallthroughCasesInSwitch": true,

    // 检查函数没有隐式的返回值
    "noImplicitReturns": true,

    // 检查未使用的局部变量
    "noUnusedLocals": true,

    // 检查未使用的参数
    "noUnusedParameters": true,

    // 检查不可达代码 true,忽略不可达代码  false,不可达代码将引起错误
    "allowUnreachableCode": true,

    // 有错误的情况下不进行编译 默认值:false
    "noEmitOnError": true
  }
}

webpack Babel

通常情况下,实际开发中我们都需要使用构建工具对代码进行打包,TS同样也可以结合构建工具一起使用,下边以webpack为例介绍一下如何结合构建工具使用TS

进入项目根目录,执行命令 npm init -y 主要作用:创建package.json文件

下载构建工具
npm i -D webpack webpack-cli webpack-dev-server typescript ts-loader clean-webpack-plugin

  • webpack - 构建工具webpack
  • webpack-cli - webpack的命令行工具
  • webpack-dev-server - webpack的开发服务器
  • typescript - ts编译器
  • ts-loader - ts加载器,用于在webpack中编译ts文件
  • html-webpack-plugin - webpack中html插件,用来自动创建html文件
  • clean-webpack-plugin - webpack中的清除插件,每次构建都会先清除目录

开发中还经常需要结合babel来对代码进行转换以使其可以兼容到更多的浏览器

npm i -D @babel/core @babel/preset-env babel-loader core-js

  • @babel/core - babel的核心工具
  • @babel/preset-env - babel的预定义环境
  • @babel-loader - babel在webpack中的加载器
  • core-js - core-js用来使老版本的浏览器支持新版ES语法

webpack.config.js配置文件

// 引入一个包
const path = require('path');
// 引入html插件
const HTMLWebpackPlugin = require('html-webpack-plugin');
// 引入clean插件
const { CleanWebpackPlugin } = require('clean-webpack-plugin');

// webpack中的所有的配置信息都应该写在module.exports中
module.exports = {
    // 指定入口文件
    entry: "./src/index.ts",

    // 指定打包文件所在目录
    output: {
        // 指定打包文件的目录
        path: path.resolve(__dirname, 'dist'),
        // 打包后文件的文件
        filename: "bundle.js",

        // 告诉webpack不使用箭头
        environment:{
            arrowFunction: false,
            const: false
        }
    },

    // 指定webpack打包时要使用模块
    module: {
        // 指定要加载的规则
        rules: [
            {
                // test指定的是规则生效的文件
                test: /\.ts$/,
                // 要使用的loader
                use: [
                     // 配置babel
                     {
                         // 指定加载器
                         loader:"babel-loader",
                         // 设置babel
                         options: {
                             // 设置预定义的环境
                             presets:[
                                 [
                                     // 指定环境的插件
                                     "@babel/preset-env",
                                     // 配置信息
                                     {
                                         // 要兼容的目标浏览器
                                         targets:{
                                             "chrome":"58",
                                             "ie":"11"
                                         },
                                         // 指定corejs的版本
                                         "corejs":"3",
                                         // 使用corejs的方式 "usage" 表示按需加载
                                         "useBuiltIns":"usage"
                                     }
                                 ]
                             ]
                         }
                     },
                    'ts-loader'
                ],
                // 要排除的文件
                exclude: /node-modules/
            },

            // 设置less文件的处理
            {
                test: /\.less$/,
                use:[
                    "style-loader",
                    "css-loader",

                    // 引入postcss
                    {
                        loader: "postcss-loader",
                        options: {
                            postcssOptions:{
                                plugins:[
                                    [
                                        "postcss-preset-env",
                                        {
                                            browsers: 'last 2 versions'
                                        }
                                    ]
                                ]
                            }
                        }
                    },
                    "less-loader"
                ]
            }
        ]
    },

    // 配置Webpack插件
    plugins: [
        new CleanWebpackPlugin(),
        new HTMLWebpackPlugin({
            // title: "这是一个自定义的title"
            template: "./src/index.html"
        }),
    ],

    // 用来设置引用模块
    resolve: {
        extensions: ['.ts', '.js']
    }

};

标签:文件,TypeScript,babel,ts,介绍,编译,webpack,开发,true
From: https://www.cnblogs.com/wdszh/p/17519131.html

相关文章

  • Xmake介绍和使用
    @目录介绍作用安装Windows系统Linux系统使用创建项目配置编译工具项目编译项目运行官网教程问题error:cannotexecv(nmake),Nosuchfileordirectoryerror:g++:fatalerror:noinputfiles介绍Xmake是一个基于Lua语言的跨平台构建工具,用于快速、简单地构建和管理C/C......
  • 活动开启 | 以梦筑码 · 不负韶华 开发者故事征集令,讲出你的故事,有机会参加HDC.Togeth
     HarmonyOS面世以来,经历了3大版本迭代,系统能力逐步完善,生态加速繁荣。一路前行,是开发者们点亮漫天星光。点滴贡献,聚沙成塔,开发者们正用代码改变世界。是梦想,激励我们一路前行。在黎明到来前,有人在迷雾中启程,有人在坎坷中奔跑,有人在未知中探索,有人在困境中坚持,有人在挫折里涅......
  • C#winform软件移植上linux的秘密,用GTK开发System.Windows.Forms
    国产系统大势所趋,如果你公司的winform界面软件需要在linux上运行,如果软件是用C#开发的,现在我有一个好的快速解决方案。世界第一的微软的MicrosoftVisualStudio,确实好用,C#开发起来确实效率高,不过微软的开发语言开发的软件的界面都是跟windows系统绑定的,现在.netcore已......
  • 解决方案|基于TQIMX6Q开发板的医疗和工业设备操作教学投屏方案
    解决方案|基于TQIMX6Q开发板的医疗和工业设备操作教学投屏方案医疗和工业设备在操作使用教学中,往往因为设备屏幕较小,实际应用场景中,教学和使用培训无法让每位操作员或者学员看到设备界面操作流程,步骤及界面变化。基于解决这些问题,广州天嵌科技推出基于TQIMX6Q平台的投屏解决方案。......
  • 数字码头APP系统开发之会员模块功能分析
    关于会员体系的详细介绍,数字码头卷轴模式系统开发过程也是一个软件工程从立项设计到实现版本上线的过程,整体的生命流程内容包含方案设计,方案评审,原型设计,UI设计,前后端程序开发,程序测试,上线应用市场,后端维护,升级迭代。在李铁牛看来,软件系统开发设计是一个讲产品设计,讲逻辑构建,讲软件......
  • API接口技术开发心得,阿里巴巴中国站获得1688商品详情数据采集商品规格信息列表调用参
     1688商品详情API接口的重要性主要体现在以下几个方面:提供全面的商品信息:1688商品详情API接口可以提供详尽的商品信息,包括商品名称、规格、价格、产地、供应商信息等。这些信息对于用户来说是非常重要的,可以帮助用户全面了解商品的特点和属性,从而做出更明智的购买决策。......
  • 05Nvidia剪枝方案介绍
    Nvidia剪枝方案介绍目前大多数的剪枝研究处于以下两个方面绝大多数剪枝是非结构化的,属于细粒度稀疏。而细粒度稀疏其实没有那么好的加速效果Coarse-grainedsparsity的稀疏效果有限("Coarse-grainedsparsity"是一种稀疏性类型,它指的是在较大的数据块或数据结构中存在稀疏性,......
  • 1.Vue3 配置开发-测试环境
    1、根目录新建.env.testing、.env.donline文件2、package.json=》scripts中配置"start":"vue-cli-serviceserve--modetesting","start-o":"vue-cli-serviceserve--modedonline"3、vue.config.jsconstBundleAnalyzerPlugin=require(&......
  • 小程序开发心得分享:优质小程序制作平台推荐
    当今,小程序已经成为许多企业和个人推广业务的首选方式。然而,对于缺乏开发能力的人们来说,制作一个高品质的小程序仍然是一个难题。这时,小程序制作平台应运而生。这些平台将小程序制作过程工具化,使得繁琐的代码编写、调试和上线等步骤都可以通过可视化操作轻松完成。这样,即使是非专......
  • 激光雷达基础介绍与仿真测试流程
    随着智能驾驶领域的快速发展与普及,激光雷达的轻量化、电子化和芯片化也逐渐成为趋势。由于激光雷达不受光线影响、分辨力高、支持3D立体,点云还支持AI算法训练等优点,一些主流车型在L3级别的智驾功能应用上搭载了激光雷达,从而完成更可靠和准确的目标探测。 在L2+或L3级以上的智驾......