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 |
无需判断,所有请求都是异步。 | 异步 |