VSCode需Pylance语言服务器+显式类型注解+python.analysis.typeCheckingMode设为basic/strict才能实时标红函数类型错误;缺一不可。

VSCode 本身不自动检测函数类型错误,必须靠语言服务器(如 Pylance、TypeScript Server)+ 正确配置 + 类型注解三者协同才能触发实时标红。
Python 函数类型错误怎么标红?
关键不是装插件,而是让 Pylance 真正“看见”类型信息:
- 函数必须带
def func(x: int) -> str:这类注解,否则 Pylance 只做弱推断,greet(123)不会报错 - 检查右下角状态栏是否显示
Python(不是Plain Text),且语言服务器是Pylance,不是Default或Jedi -
settings.json中必须启用类型检查:"python.analysis.typeCheckingMode": "basic"或"strict";设为"off"就等于关掉所有类型提示 - 如果调用第三方库(如
requests.get())不报类型错,大概率是该库没提供类型存根(stub),可临时加# type: ignore,或安装types-requests
TypeScript 函数参数类型不匹配为何不报错?
不是插件失效,是项目没加载有效的类型上下文:
- 确认项目根目录有
tsconfig.json(哪怕只有{"compilerOptions": {"target": "ES2020"}}) - VSCode 必须打开整个文件夹(而非单个
.ts文件),否则无法读取项目级配置 - 检查右下角 TypeScript 版本号——优先使用工作区本地安装的
typescript(npm install typescript --save-dev),全局版本常滞后 -
"strict": true必须写在tsconfig.json的compilerOptions里,仅改 VSCode 设置无效
为什么 ESLint 不报函数类型错误?
ESLint 根本不处理类型,它只管语法和风格。想让它参与类型检查,必须绕道:
- ESLint 无法识别
def foo(x: str) -> int:中的str和int,这类检查全由 Pylance 或 TypeScript Server 完成 - 若你看到
no-undef报错(如调用未定义函数),那是 ESLint 在查变量存在性,和类型无关 - 想统一管理,可用
pyright替代 Pylance 做 CLI 检查,再通过 ESLint 的eslint-plugin-pyright把结果转成 ESLint 问题格式(小众但可行)
真正容易被忽略的是:类型检查器不会主动“猜”你的意图。没有显式注解、没有有效配置、没有正确加载项目上下文,波浪线永远不会出现——它不报错,不代表没问题,只是彻底放弃了判断。


















