适用于LeetCode的TypeScript编程调试环境
文章目录
- 前言
- 1.LeetCode使用体验
- 1.1 调试
- 1.2 验证测试用例
- 2.简述
- 3.使用方法
- 3.1 准备
- 3.2 解题
- 3.3 提交
- 3.4 测试用例
- 3.5 调试
- 3.6 其他
- 总结
前言
LeetCode是很好的日常训练编程的平台,在日常使用TypeScript进行编程训练时,或多或少都会有很多烦恼,尤其当题目难度较大,准备一个调试环境就会耗费一定的精力。由此,应当准备一个适用于LeetCode的TypeScript调试环境。
源码
1.LeetCode使用体验
1.1 调试
调试一定是影响编码体验最重要的因素之一,绝大部分程序员都会自己准备调试环境。本地环境的性能,使用习惯都可以被很好地记录,在浏览器内的调试最有效的就是打关键数据日志来进行分析和修正。
1.2 验证测试用例
验证测试用例经常会出现一种情况,我做对了A用例,做错了B用例,修改代码后B用例通过了,但是A用例错误了。反反复复更换需要验证的测试用例,体验极差。多用例测试的需求尤为明显。
2.简述
本调试环境主要为原生TypeScript编写,便于使用,无需做过多环境的配置。TypeScript作为一门面向对象语言,还是希望自己在练习中可以更多地将数据和具体操作进行封装,和LeetCode平台也会使用一个函数对象来在网页端提交。支持多用例批量测试,支持单用例具体调试,支持多题目多用例批量调试,支持单题目多用例批量调试。TypeScript作为一门强类型语言,还是建议大家可以严格使用类型声明。
3.使用方法
3.1 准备
VScode nodejs
3.2 解题
path: src/leetCode/
可以参考此路径下的例子。
模板示例:
// Func()会将解题的函数注册到map中,FuncName是题目对应的唯一表示,不能重复,重复会按照注册顺序覆盖
import { FuncBase } from "../../FunctionBase/FunctionBase";
import { Func } from "../../test/CodeMap";
import "./TestCase";// 引入测试用例文件进行注册
class FuncName extends FuncBase<number, number> {@Func("FuncName", true)public testFunc(para: number): number {return 1;}
}
注意事项:
1.testFunc方法需要和题目给出的函数原型一致,是最终测试的方法。
2.para可以写多个参数,并不是只有一个。
3.FuncBase<IParameterType, IAnswerType>,声明参数和返回值类型,保证强类型。
4.Func(“FuncName”, true),FuncName为题目名称,true指是否单独调试该题目,可选参数。
5.在src/leetCode/entry.ts中引入题目,进行注册。
3.3 提交
为了强调类的封装,将原本leetcode需要的函数,制作了函数对象模板,所有在网页的提交都作为函数对象来直接提交。
// 仅将对应的函数对象粘贴,删去保证强类型化的基类。
// 此部分xxxxxxxx指leetcode给出的测试方法。
function xxxxxxxx(para: number): number {return new FuncName().testFunc(para);
};class FuncName {public testFunc(para: number): number {return 1;}
}
3.4 测试用例
测试用例均在TestCase.ts文件中,可以参考此文件中的例子。
模板示例:
import { TestBase } from "../../FunctionBase/FunctionBase";
import { Case, Debug } from "../../test/CodeMap";
class TestCase extends TestBase<number, number> {// 和题目注册时相同的唯一标识public getFuncName(): string {return "FuncName";}@Debug()// 单独调试此用例@Case()// 注册测试用例private case1(): [number, number] {return [0, 1];}@Case()private case2(): [number, number] {return [1, 0];}
}
注意事项:
1.使用Debug进行注册时会只对单一用例进行运行。
2.TestBase<IParameterType, IAnswerType> 声明参数和返回值类型,保证强类型。
3.Case 返回的是[Parameter, Answer]的结构
4.parameter 可以是多个,具体可以参考其他用例。
3.5 调试
执行命令 npm run build 编译(在package.json已配置)
直接在VScode中打断点,F5进入调试模式。
默认打出日志样例:
//批量运行 只显示用例是否通过
------------------------------------
TowSum
case1: true
case2: true
case3: true
------------------------------------
StringToInteger
case1: true
case2: true
case3: true
case4: true
case5: true
case6: true
case7: true//单题调试模式 显示对应的参数和执行结果
------------------------------------
TowSum
case1:
parameter: (2) [Array(2), 6] (2) [0, 1] (2) [0, 1]
answer: (2) [0, 1]
expected: (2) [0, 1]
case2:
parameter: (2) [Array(4), 9] (2) [0, 1] (2) [0, 1]
answer: (2) [0, 1]
expected: (2) [0, 1]
case3:
parameter: (2) [Array(3), 6] (2) [1, 2] (2) [1, 2]
answer: (2) [1, 2]
expected: (2) [1, 2]
3.6 其他
有一份.prettierrc作为格式化代码的配置,安装Prettier插件即可使用,如有好的配置项欢迎提出。
源码中存在我个人的一些练习题目,声明复杂的参数,返回值类型可以参考。
ts编译生成的js文件会在js目录下。
0.Template目录是一组空模板。
如有问题、建议,欢迎交流。
总结
做好之后总的使用体验还是不错的,只需要将自己错误的用例添加到TestCase,然后批量运行,发现不对的用例可以直接进行单用例调试。每次新加一题配置参数类型和答案类似的时间会稍长一些,之后的用例调试已经新用例添加还是很舒适的。之后就是努力的练习了,业精于勤;荒于嬉;行成于思;毁于随。
适用于LeetCode的TypeScript编程调试环境相关推荐
- Visual Studio Code搭建TypeScript开发环境
转载 http://www.cnblogs.com/sunjie9606/p/5945540.html 使用Visual Studio Code搭建TypeScript开发环境 1.TypeScrip ...
- 使用Visual Studio Code + Node.js搭建TypeScript开发环境
Visual Studio Code搭建Typescript开发环境 -- 相关文章: http://www.cnblogs.com/sunjie9606/p/5945540.html [注意:这里仅 ...
- 配置Typescript+Node环境
配置 NodeJS + Typescript 开发环境 CSDN用户名:jcLee95 (关于TypeScript配置文件.NodeJS安装请参考其它博文,这里不再赘述) 1. 安装TypeScrip ...
- 使用Visual Studio Code搭建TypeScript开发环境
使用Visual Studio Code搭建TypeScript开发环境 1.TypeScript是干什么的 ? TypeScript是由微软Anders Hejlsberg(安德斯·海尔斯伯格,也是 ...
- 使用gulp和vsc构建高效的typescript开发环境
出于某些原因,近期开始需要在公司推广使用nodejs写服务端,因为之前使用es6开发过多个个人项目,所以知道新手开发node非常容易将代码写的散乱并且不易后人理解.本人刚入行的时候做的是java,觉得 ...
- 手牵手系列之TypeScript开发环境搭建
新建项目 初始化 npm init 安装全局依赖 npm install typescript tslint -g 执行命令初始化,项目根目录生成tsconfig.json文件 tsc --init ...
- java回溯算法_回溯算法讲解--适用于leetcode绝大多数回溯题目
什么是回溯算法? 回溯法是一种系统搜索问题解空间的方法.为了实现回溯,需要给问题定义一个解空间. 说到底它是一种搜索算法.只是这里的搜索是在一个叫做解空间的地方搜索. 而往往所谓的dfs,bfs都是在 ...
- TypeScript 开发环境的搭建与数据类型
一.Ts的优势 更早的发现错误 任何位置都有代码提示,增加开发效率 类型系统提升了代码的可维护性,重构更容易 使用最新的ES语法 TS类型推断机制,降低成本 二.开发环境的搭建 安装 Node.js ...
- 通过 SAP UI5 的 TypeScript 开发环境,来学习什么是 DefinitelyTyped
我们看个具体的例子.下面这个使用 TypeScript 编写的 SAP UI5 Component: import UIComponent from "sap/ui/core/UICompo ...
最新文章
- 5.【练习题】构造方法与重载
- micopython 18b20_[MicroPython]stm32f407控制DS18B20检测温度
- 为什么熊掌号没有了_为什么人类总吃食草动物,很少吃食肉动物?
- mysql 前n个最大值_MySQL varchar计算:求列的数目和计算N的最大值
- oracle 更改分区列,ORA-14061: 不能更改索引分区列的数据类型或长度
- IP子网划分【网工复习专题】2022.5.8
- 求 HCDA认证题库
- 鸿蒙系统怎么在桌面添加小程序,从微信小程序到鸿蒙JS开发-menutoastdialog
- 一键生成表白页面,个人网站,在线制作生成网站php源码
- 如何使用ARM协处理器CP15在32位ARRCH模式下操作64位寄存器)
- JavaMail QQ邮箱发送内容+图片
- java里用idea是什么意思_idea什么意思?啥意思?idea简介
- Eclipse 介绍-配置-使用
- [CVE-2021-1732] win32k内核提权漏洞分析
- 第7章 路由器配置及使用
- ios 支付验证 php,PHP服务端验证APPLE支付的收据
- 网页素材大宝库:高质量的网站纹理背景素材
- 云服务器搭建个人博客网站WordPress教程
- 通达信 移动平均算法_通达信组合指标,如何使用股票池进行自动交易?实现程序化交易...
- OpenGL 纹理本质
热门文章
- 广东省人民政府关于印发广东省深化“互联网+先进制造业”发展工业互联网实施方案及配套政策措施的通知
- SVM实战之垃圾邮件过滤
- NetApp 混合云技术
- 【Web入门项目源码分享】Java+Jsp
- VNCServer,SSH Secure Shell Client,window远程控制linux
- GPGPU-Sim学习(一)-GPGPU-Sim介绍
- phppage类封装分页功能_php封装的page分页类完整实例代码
- 多层感知机+代码实现
- Neumann 纽曼话筒选购指南
- Win11 Sandbox沙盒默认英文改中文