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

04 # 第一个 TypeScript 程序

初始化项目以及安装依赖

新建 ts_in_action 文件夾

npm init -y

安装好 typescript,就可以执行下面命令查看帮助信息

npm i typescript -g
tsc -h

创建配置文件,执行下面命令就会生成一个 tsconfig.json 文件

tsc --init

使用 tsc 编译一个 js 文件

新建 src/index.ts

let kaimo:string = "hello typescript"

执行下面命令编译该 ts 文件

tsc ./src/index.ts

编译结果如下:

var kaimo = "hello typescript";

也可以使用 https://www.typescriptlang.org/play 查看

配置构建工具 webpack 环境

安装依赖

npm i webpack@4.35.2 webpack-cli@3.3.5 webpack-dev-server@3.7.2 -D
npm i ts-loader@6.0.4 typescript@3.5.2 -D
npm i html-webpack-plugin@3.2.0 clean-webpack-plugin@3.0.0 webpack-merge@4.2.1 -D

配置相应的环境

基础配置:

// 公共环境配置// 下面这行用于 vscode 中智能化自动提示 webpack 配置项
/** @type {import('webpack').Configuration} */const HtmlWebpackPlugin = require("html-webpack-plugin");const config = {entry: "./src/index.ts",output: {filename: "app.js"},resolve: {extensions: [".js", ".ts", ".tsx"]},module: {rules: [{test: /\.tsx?$/i,use: [{loader: "ts-loader"}],exclude: /node_modules/}]},plugins: [new HtmlWebpackPlugin({template: "./src/tpl/index.html"})]
};
module.exports = config;

开发配置:

// 开发环境配置// 下面这行用于 vscode 中智能化自动提示 webpack 配置项
/** @type {import('webpack').Configuration} */const config = {devtool: "cheap-module-eval-source-map"
};module.exports = config;

生产配置:

// 生产环境配置// 下面这行用于 vscode 中智能化自动提示 webpack 配置项
/** @type {import('webpack').Configuration} */const CleanWebpackPlugin = require("clean-webpack-plugin");const config = {plugins: [new CleanWebpackPlugin()]
};module.exports = config;

webpack 文件入口配置:

// webpack 文件入口// 下面这行用于 vscode 中智能化自动提示 webpack 配置项
/** @type {import('webpack').Configuration} */const merge = require("webpack-merge");
const baseConfig = require("./webpack.base.config");
const devConfig = require("./webpack.dev.config");
const proConfig = require("./webpack.pro.config");const config = merge(baseConfig, process.NODE_ENV === "development" ? devConfig : proConfig);module.exports = config;

package.json 脚本配置

"scripts": {"start": "webpack-dev-server --mode=development --config ./build/webpack.config.js","build": "webpack --mode=production --config ./build/webpack.config.js"
},

启动服务并且打包测试

添加模板

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>TypeScript in Action</title></head><body><div class="app"></div></body>
</html>

添加功能

let kaimo:string = "hello typescript";document.querySelectorAll(".app")[0].innerHTML = kaimo;

启动服务 npm run start,访问 http://localhost:8080/

在这里插入图片描述
在这里插入图片描述

打包 npm run build

在这里插入图片描述

相关文章:

  • 解决VSCode按住Ctrl(or Command) 点击鼠标左键不跳转的问题(不能Go to Definition)
  • Java(119):ExcelUtil工具类(org.apache.poi读取和写入Excel)
  • okhttp导致的内存溢出(OOM)sun.security.ssl.SSLSocketImpl
  • 西南科技大学数字电子技术实验二(SSI逻辑器件设计组合逻辑电路及FPGA实现 )FPGA部分
  • day3 移出链表中值为x的节点
  • python每日一题——19螺旋矩阵
  • 【分布式事务】Seata 开源的分布式事务解决方案
  • Jmeter-分布式压测(远程启动服务器,windows)
  • WT2605-24SS录放音语音芯片:便捷按键功能提升用户体验
  • 2023年第十二届数学建模国际赛小美赛A题太阳黑子预测求解分析
  • 【区块链】产品经理的NFT初探
  • C#:程序发布的大小控制
  • 【AUTOSAR OS】如何处理高频高速任务的挑战?
  • Discuz论坛自动采集发布软件
  • SQL注入漏洞的检测及防御方法
  • __proto__ 和 prototype的关系
  • 【mysql】环境安装、服务启动、密码设置
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • ReactNative开发常用的三方模块
  • ------- 计算机网络基础
  • 京东美团研发面经
  • 老板让我十分钟上手nx-admin
  • 少走弯路,给Java 1~5 年程序员的建议
  • 【干货分享】dos命令大全
  • ​520就是要宠粉,你的心头书我买单
  • ​马来语翻译中文去哪比较好?
  • #pragma once与条件编译
  • #QT(智能家居界面-界面切换)
  • $ git push -u origin master 推送到远程库出错
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (c语言)strcpy函数用法
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (四)JPA - JQPL 实现增删改查
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (状压dp)uva 10817 Headmaster's Headache
  • .Net mvc总结
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • []Telit UC864E 拨号上网
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [1] 平面(Plane)图形的生成算法
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • [BZOJ 1040] 骑士
  • [C语言]——内存函数
  • [DEBUG] spring boot-如何处理链接中的空格等特殊字符
  • [Deepin 15] 编译安装 MySQL-5.6.35
  • [Django开源学习 1]django-vue-admin
  • [FROM COM张]如何解决Nios II SBTE中出现的undefined reference to `xxx'警告
  • [FT]chatglm2微调