TypeDoc 为什么会省略 Promise<User | undefined> 中的 undefined?
数据小陈
结论
先检查 TypeDoc 使用的 tsconfig.json 是否启用了 strictNullChecks。如果关闭了该选项,TypeScript 会将 undefined 视为可赋给其他类型,因此 User | undefined 可能被简化为 User,TypeDoc 生成的类型也会显示为 Promise<User>。
检查并修复配置
在 TypeDoc 实际使用的 tsconfig.json 中启用该选项:
{
"compilerOptions": {
"strictNullChecks": true
}
}
也可以启用包含这项设置的严格模式:
{
"compilerOptions": {
"strict": true
}
}
接着确认 TypeDoc 使用了这个配置文件。例如:
npx typedoc --tsconfig tsconfig.json
如果项目中有多个 tsconfig.json,请将路径替换为包含 IAuthProvider 的项目配置。可以运行以下命令,查看该配置解析出的编译选项:
npx tsc --showConfig -p tsconfig.json
确认输出中的 strictNullChecks 为 true 后,再重新生成文档。启用该选项后,如果 User 本身不包含 undefined,类型通常会显示为 Promise<User | undefined>。
如果仍然显示为 Promise<User>
确认 TypeDoc 读取的是预期的配置文件,并检查是否有其他配置或构建步骤改变了编译选项。也可以直接查看 TypeScript 如何解析这段声明的类型。如果 TypeScript 已经将联合类型简化,TypeDoc 就无法显示其中的 undefined 类型。
备注:内容仅供参考。
