文章目录

  • 前言
  • 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编程调试环境相关推荐

  1. Visual Studio Code搭建TypeScript开发环境

    转载 http://www.cnblogs.com/sunjie9606/p/5945540.html 使用Visual Studio Code搭建TypeScript开发环境 1.TypeScrip ...

  2. 使用Visual Studio Code + Node.js搭建TypeScript开发环境

    Visual Studio Code搭建Typescript开发环境 -- 相关文章: http://www.cnblogs.com/sunjie9606/p/5945540.html [注意:这里仅 ...

  3. 配置Typescript+Node环境

    配置 NodeJS + Typescript 开发环境 CSDN用户名:jcLee95 (关于TypeScript配置文件.NodeJS安装请参考其它博文,这里不再赘述) 1. 安装TypeScrip ...

  4. 使用Visual Studio Code搭建TypeScript开发环境

    使用Visual Studio Code搭建TypeScript开发环境 1.TypeScript是干什么的 ? TypeScript是由微软Anders Hejlsberg(安德斯·海尔斯伯格,也是 ...

  5. 使用gulp和vsc构建高效的typescript开发环境

    出于某些原因,近期开始需要在公司推广使用nodejs写服务端,因为之前使用es6开发过多个个人项目,所以知道新手开发node非常容易将代码写的散乱并且不易后人理解.本人刚入行的时候做的是java,觉得 ...

  6. 手牵手系列之TypeScript开发环境搭建

    新建项目 初始化 npm init 安装全局依赖 npm install typescript tslint -g 执行命令初始化,项目根目录生成tsconfig.json文件 tsc --init ...

  7. java回溯算法_回溯算法讲解--适用于leetcode绝大多数回溯题目

    什么是回溯算法? 回溯法是一种系统搜索问题解空间的方法.为了实现回溯,需要给问题定义一个解空间. 说到底它是一种搜索算法.只是这里的搜索是在一个叫做解空间的地方搜索. 而往往所谓的dfs,bfs都是在 ...

  8. TypeScript 开发环境的搭建与数据类型

    一.Ts的优势 更早的发现错误 任何位置都有代码提示,增加开发效率 类型系统提升了代码的可维护性,重构更容易 使用最新的ES语法 TS类型推断机制,降低成本 二.开发环境的搭建 安装 Node.js ...

  9. 通过 SAP UI5 的 TypeScript 开发环境,来学习什么是 DefinitelyTyped

    我们看个具体的例子.下面这个使用 TypeScript 编写的 SAP UI5 Component: import UIComponent from "sap/ui/core/UICompo ...

最新文章

  1. 5.【练习题】构造方法与重载
  2. micopython 18b20_[MicroPython]stm32f407控制DS18B20检测温度
  3. 为什么熊掌号没有了_为什么人类总吃食草动物,很少吃食肉动物?
  4. mysql 前n个最大值_MySQL varchar计算:求列的数目和计算N的最大值
  5. oracle 更改分区列,ORA-14061: 不能更改索引分区列的数据类型或长度
  6. IP子网划分【网工复习专题】2022.5.8
  7. 求 HCDA认证题库
  8. 鸿蒙系统怎么在桌面添加小程序,从微信小程序到鸿蒙JS开发-menutoastdialog
  9. 一键生成表白页面,个人网站,在线制作生成网站php源码
  10. 如何使用ARM协处理器CP15在32位ARRCH模式下操作64位寄存器)
  11. JavaMail QQ邮箱发送内容+图片
  12. java里用idea是什么意思_idea什么意思?啥意思?idea简介
  13. Eclipse 介绍-配置-使用
  14. [CVE-2021-1732] win32k内核提权漏洞分析
  15. 第7章 路由器配置及使用
  16. ios 支付验证 php,PHP服务端验证APPLE支付的收据
  17. 网页素材大宝库:高质量的网站纹理背景素材
  18. 云服务器搭建个人博客网站WordPress教程
  19. 通达信 移动平均算法_通达信组合指标,如何使用股票池进行自动交易?实现程序化交易...
  20. OpenGL 纹理本质

热门文章

  1. 广东省人民政府关于印发广东省深化“互联网+先进制造业”发展工业互联网实施方案及配套政策措施的通知
  2. SVM实战之垃圾邮件过滤
  3. NetApp 混合云技术
  4. 【Web入门项目源码分享】Java+Jsp
  5. VNCServer,SSH Secure Shell Client,window远程控制linux
  6. GPGPU-Sim学习(一)-GPGPU-Sim介绍
  7. phppage类封装分页功能_php封装的page分页类完整实例代码
  8. 多层感知机+代码实现
  9. Neumann 纽曼话筒选购指南
  10. Win11 Sandbox沙盒默认英文改中文