You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript createProgram函数疑似忽略lib配置选项,如何解决?

问题解决:TypeScript编译器忽略lib选项的问题

问题场景

你编写了调用TypeScript编译器获取警告的JavaScript程序,已在compilerOptions中设置lib: ['es2017'],但编译器仍提示Property 'values' does not exist on type 'ObjectConstructor',要求设置lib为es2017或更高版本。

核心原因

传递给ts.createProgram的参数结构错误,导致编译器无法正确读取你配置的compilerOptions。你当前传入的是包含compilerOptions属性的外层对象,而非直接传入compilerOptions本身。

解决方案

修改compile函数中ts.createProgram的调用代码:

方案一:直接传入compilerOptions

将原来的代码:

const program = ts.createProgram(fileNames, options)

替换为:

const program = ts.createProgram(fileNames, options.compilerOptions)

方案二:使用完整的CreateProgramOptions结构(如需保留reportDiagnostics)

如果需要启用reportDiagnostics,可以按照CreateProgramOptions的规范传递参数:

const program = ts.createProgram({
  rootNames: fileNames,
  options: options.compilerOptions,
  reportDiagnostics: options.reportDiagnostics
})

修改后,编译器将正确识别lib: ['es2017']的配置,Object.values相关的错误提示会消失。

内容的提问来源于stack exchange,提问作者yigal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 05:22:45