类型不兼容报错求助:SanityClient | SanityStegaClient无法赋值给SanityClient
解决SanityClient与SanityStegaClient类型不兼容问题
问题根源
这是TypeScript类型校验报错:你传入的客户端实例是SanityClient | SanityStegaClient联合类型,但目标参数只接受SanityClient。因为SanityStegaClient包含私有成员,TypeScript不允许这种跨类型的隐式赋值。
可行解决办法
指定客户端类型(推荐)
创建Sanity客户端时直接声明类型为SanityClient,避免返回联合类型:import { createClient, SanityClient } from '@sanity/client'; const client: SanityClient = createClient({ projectId: '你的项目ID', dataset: '你的数据集', apiVersion: 'v2023-05-03', useCdn: true });类型断言(临时快速修复)
如果你确定当前客户端就是SanityClient,可以用类型断言强制转换:// 假设client是你获取到的联合类型实例 const sanityClient = client as SanityClient; // 用sanityClient去调用需要SanityClient的方法对齐教程依赖版本
大概率是你安装的Sanity版本和教程里的不一样,Stega相关的客户端是新版才有的。找到教程里package.json中@sanity/client的版本号,安装对应版本:npm install @sanity/client@x.x.x # 或者yarn yarn add @sanity/client@x.x.x适配Stega客户端类型
如果你的项目需要用到Stega功能,直接把接收参数的类型改成SanityStegaClient即可:import { SanityStegaClient } from '@sanity/client/stega'; function fetchData(client: SanityStegaClient) { // 业务逻辑 }
内容的提问来源于stack exchange,提问作者Steven Josh Deles
相关产品推荐
相关产品推荐

