迁移至FedCM时gapi.client.init添加use_fedcm触发TS类型错误
gapi迁移FedCM遇TS类型错误的解决办法
问题根因
谷歌已经在官方文档里要求gapi初始化时添加use_fedcm: true,但社区维护的@types/gapi类型包还没同步更新这个属性,导致TS类型校验抛出TS2345错误。
实用解决方法
- 扩展类型声明:在项目里新建一个
gapi.d.ts文件,手动扩展gapi的初始化配置接口:
declare namespace gapi.client { interface InitOptions { use_fedcm?: boolean; } }
记得把这个文件加入tsconfig.json的include数组中,TS就能识别这个新增属性了。
- 精准类型断言:不想加类型文件的话,用类型断言绕过单个属性的校验,比
// @ts-ignore更安全,不会漏掉其他潜在错误:
gapi.client.init({ // 你的其他配置项 use_fedcm: true } as gapi.client.InitOptions & { use_fedcm: boolean });
- 临时用any兜底:如果赶进度,可以把配置对象转成
any快速解决,但不建议长期使用,会丢失TS的类型保护能力:
gapi.client.init({ // 你的其他配置项 use_fedcm: true } as any);
关于谷歌文档的疑问
这是产品功能更新和社区类型定义不同步导致的常见问题:谷歌文档跟着产品迭代节奏更新,而@types系列包由社区志愿者维护,更新速度会慢一拍。你也可以去DefinitelyTyped仓库提交PR,补上这个属性的类型定义,帮其他开发者避坑。
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

