15.7【TS中级项目】打字速度监测器

开发一个应用程序,通过显示随机文本段落并记录用户输入所花费的时间,来测量用户的打字速度。

  • 实现计时器和事件监听器来跟踪打字速度;
  • 使用 TypeScript 处理用户输入并计算结果;
  • 显示结果并向用户提供反馈。

15.7【TS中级项目】打字速度监测器_第1张图片

打字速度一直是评估工程师的重要测试之一,因为更快的打字技能意味着更高效的编码。为了测试这个速度,我们将构建一个打字速度检测器。

我们将要创建的内容如下:

  • 一个用于输入文本的输入框;
  • 一个用于显示时间的时间元素;
  • 一个用于显示每分钟字数(WPM)的元素;
  • 一个用于开始测试的“开始”按钮。

HTML 与 CSS

这是一个打字速度测试 Web 应用,用户可以通过它测量自己的打字速度(以每分钟字数 WPM 为单位)。该应用包含以下主要元素:

  • 一个计时器,用于显示剩余时间或计时时长;
  • 一个输入区域,供用户输入测试文本;
  • 一个“开始”按钮,用于启动打字测试。

  
    
  
  
    

Typing Speed Test

Press Start to begin typing

Time: 0s

WPM: 0

在这个示例中:

  • .box 容器居中显示,设计简洁,包含一个标题、句子显示区、文本输入框和统计信息区。
  • #inp 是一个 textarea,初始状态为禁用(disabled),用户点击 “开始” 按钮(#start)后才会激活输入。
  • #tm(时间)和 #wpm(每分钟字数)会随着用户输入实时更新,用于跟踪用户的打字速度。

TypeScript 逻辑

这段代码创建了一个动态网格,允许用户通过更改网格大小和颜色在上面绘画。它支持通过鼠标事件进行绘画和重置网格的交互操作。

const c = document.querySelector(".container");
const s = document.querySelector('.size');
const col = document.querySelector('.color');
const rBtn = document.querySelector('.button');

if (!c || !s || !col || !rBtn) {
  throw new Error("Missing required DOM elements");
}

let sz: number = parseInt(s.value);
let d: boolean = false;

function g(): void {
  c.style.setProperty("--size", sz.toString());
  c.innerHTML = "";

  for (let i = 0; i < sz * sz; i++) {
    const b = document.createElement("div");
    b.classList.add("box");
    b.addEventListener('mouseenter', () => o(b));
    b.addEventListener('mousedown', () => m(b));
    c.appendChild(b);
  }
}

function o(b: HTMLDivElement): void {
  if (!d) return;
  b.style.backgroundColor = col.value;
}

function m(b: HTMLDivElement): void {
  b.style.backgroundColor = col.value;
}

window.addEventListener('mousedown', () => {
  d = true;
});

window.addEventListener('mouseup', () => {
  d = false;
});

function r(): void {
  g();
}

rBtn.addEventListener('click', r);

s.addEventListener('change', () => {
  sz = parseInt(s.value);
  r();
});

g();

在这个示例中:

  • 函数 g() 生成一个大小为 sz × sz 的网格,先清除之前的网格再添加新的单元格。
  • 网格大小根据用户输入(.size 输入框)动态更新。
  • 当鼠标悬停(mouseenter)或点击(mousedown)单元格时,单元格颜色会变成用户选择的颜色(col.value)。
  • 布尔变量 d 用来追踪鼠标是否按下,从而实现流畅绘画效果。
  • 点击重置按钮(.button)会清空并重新创建网格,确保用户无需刷新页面即可重新开始。
  • 当用户更改 .size 输入时,事件监听器 s.addEventListener('change', ...) 会触发网格的更新。

将 TypeScript 文件转换为 JavaScript 文件

现在你需要将 TypeScript 文件转换为浏览器可以执行的 JavaScript 文件。你可以使用以下命令之一来完成转换。

npx  tsc typing.ts
tsc typing.ts
  • 命令 typing.ts 会将 typing.ts 这个 TypeScript 文件编译成 typing.js JavaScript 文件。
  • 默认情况下,输出文件会放在与输入文件相同的目录下。

完整代码


  
    
  
  
    

Typing Speed Test

Press Start to begin typing

Time: 0s

WPM: 0

你可能感兴趣的:(2025,TypeScript学习指南,typescript)