以下是将代码修改为 TypeScript + Vue 的版本:
### 1. 安装依赖包
```bash
npm install markdown-it mathjax
npm install --save-dev @types/markdown-it
```
### 2. 在 `src/utils/mathjax.js` 文件中配置 MathJax
```javascript
window.MathJax = {
tex: {
inlineMath: [
["$", "$"],
["\\(", "\\)"],
["\(", "\)"],
], // 行内公式选择符
displayMath: [
["$$", "$$"],
["\\[", "\\]"],
], // 段内公式选择符
},
startup: {
ready() {
MathJax.startup.defaultReady();
},
},
};
```
### 3. 在 `main.ts` 中导入 MathJax
```typescript
import "@/utils/mathjax";
import "mathjax/es5/tex-svg";
```
### 4. 页面代码
```vue
```
### 代码说明:
1. **TypeScript 类型定义**:
- `text` 使用了 `ref
` 来明确它是一个字符串类型的响应式变量。
- `renderedMarkdown` 使用了 `computed` 来明确它是一个字符串类型的计算属性。
2. **MarkdownIt 类型**:
- 通过 `npm install --save-dev @types/markdown-it` 安装了 `markdown-it` 的类型定义,确保 TypeScript 能够正确识别 `MarkdownIt` 的类型。
3. **MathJax 配置**:
- `window.MathJax` 的配置保持不变,确保 MathJax 能够正确渲染数学公式。
4. **样式**:
- 样式部分保持不变,确保页面布局和输入框的样式符合预期。
### 总结:
通过将代码转换为 TypeScript,我们增加了类型安全性,确保在开发过程中能够捕获潜在的类型错误。同时,TypeScript 的类型推断和自动补全功能也能提高开发效率。