TypeScript satisfies特性在Cloud Functions中无法编译的问题咨询
TypeScript satisfies特性在Cloud Functions中编译失败问题
我的项目基于TypeScript ^4.6.4开发Cloud Functions,计划使用satisfies特性,但编译时失败(VS Code智能感知无异常)。想确认该特性是否被Cloud Functions支持?
项目配置信息
package.json
"engines": { "node": "18" }, "devDependencies": { "typescript": "^4.6.4" }, "dependencies": { "firebase-admin": "^11.5.0", "firebase-functions": "^4.2.1", // ... }
tsconfig.json
"compilerOptions": { "module": "commonjs", "noImplicitReturns": true, "noUnusedLocals": true, "outDir": "lib", "sourceMap": true, "strict": true, "target": "es2017", "baseUrl": ".", // ... }
错误详情
尝试写入Firestore文档时触发编译错误:
error TS1005: ',' expected.
对应的代码示例:
docRef.set({ obj1: 0xbad, obj2: 0xb0b, } satisfies Obj1Obj2Type);
将satisfies替换为as可解决问题,但疑惑为何satisfies无法生效。
问题原因与解决方案
satisfies是TypeScript 4.9版本才正式引入的语法特性,你当前使用的TypeScript 4.6.4并不支持该特性。
VS Code智能感知正常是因为编辑器内置的TypeScript版本通常高于项目依赖的版本,它能识别新语法,但项目编译时会使用你package.json中指定的4.6.4版本,因此出现编译报错。
Cloud Functions本身不对TypeScript特性做限制,只要你的TypeScript版本支持对应特性即可。解决方法是将TypeScript版本升级到4.9及以上:
- 修改
package.json中devDependencies里的typescript版本为^4.9.0或更高 - 执行
npm install或yarn install更新依赖
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

