1. NPM 全局安装的问题
- 问题描述
在 VSCode 终端中执行npm install -g typescript后,运行tsc -v提示'tsc' 不是内部或外部命令,也不是可运行的程序或批处理文件。 - 解决过程
- 执行
npm root -g查看全局安装模块的路径:
路径是D:\develop\NodeJS\nodereps\npm_global\node_modules。 - 执行
npm prefix -g得到全局模块根目录:
路径是D:\develop\NodeJS\nodereps\npm_global。 - 环境变量未正确配置,
tsc应位于全局路径的bin子目录。手动检查后发现bin目录不存在,实际tsc在D:\develop\NodeJS\nodereps\npm_global中。 - 添加
D:\develop\NodeJS\nodereps\npm_global到系统环境变量PATH。 - 验证成功运行:
tsc -v输出正确的 TypeScript 版本。
- 执行
2. PowerShell 执行策略问题
-
问题描述
在运行tsc命令时提示:因为在此系统上禁止运行脚本。有关详细信息,请参阅 about_Execution_Policies。
-
解决过程
- 检查当前执行策略:
Get-ExecutionPolicy输出Bypass。 - 修改执行策略:
使用Set-ExecutionPolicy RemoteSigned命令后提示策略被覆盖,需使用Get-ExecutionPolicy -List查看具体限制范围。 - 了解执行策略的含义:
RemoteSigned:本地脚本无需签名,远程脚本需签名。Bypass:运行任何脚本,无限制。
- 最终无需更改策略,成功运行
tsc。
- 检查当前执行策略:
3. ESLint 配置与问题禁用
-
问题描述
使用 TypeScript 编写代码时,出现多个 ESLint 错误提示,例如:'username' is assigned a value but never used.'username' is never reassigned. Use 'const' instead.Type string trivially inferred from a string literal, remove type annotation.
-
解决过程
-
查找 ESLint 配置文件:
在package.json文件中找到eslintConfig节点。 -
在
rules中添加规则禁用项:"rules": { "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": "off", "prefer-const": "off", "@typescript-eslint/no-inferrable-types": "off" }
-
保存并重启 VSCode,问题解决。
-
4. TypeScript 类属性的可选性
-
问题描述
TypeScript 接口中的属性可以用?表示可选,是否也可以在类中使用? -
解决方法
可以在类属性上使用?,表示该属性是可选的。例如:class User { name: string; age?: number; // 可选属性 constructor(name: string) { this.name = name; } } const user1 = new User("张三"); const user2 = new User("李四"); user2.age = 20;
5. 类方法的调用注意事项
-
问题描述
定义类方法后,直接引用方法名不会执行方法,需加()。 -
示例
class User { name: string; constructor(name: string) { this.name = name; } study() { console.log(`${this.name} 正在学习`); } } const user = new User("张三"); user.study(); // 输出:张三 正在学习
6. 异步请求
在代码层面识别同步请求和异步请求,关键是观察 AJAX 请求 的配置和调用方式。以下是一些具体的关键词或代码特征,可以用来区分同步和异步请求:
| 技术 | 关键词或参数 | 默认请求类型 |
|---|---|---|
XMLHttpRequest |
open 方法的第三个参数(true/false)。 |
异步(true) |
fetch |
不需要额外参数,默认是异步。 | 异步 |
jQuery.ajax |
async 参数的值。 |
异步(async: true) |
Axios |
无需判断,所有请求都是异步。 | 异步 |