TypeScript类型错误:string无法赋值给{ results: string; }类型参数
解决React Native集成Unity时的TypeScript参数类型不匹配问题
错误原因
你调用onUnityMessageController(result.nativeEvent.message)时触发的错误,核心是参数类型不匹配:
onUnityMessageController定义的参数是一个包含results字段的对象(类型{ results: string })- 但实际传入的
result.nativeEvent.message是字符串类型(从提供的类型定义里的UnityMessage接口能明确看到message: string)
修复方案
方案1:修改函数参数类型,直接接收字符串
把onUnityMessageController的参数类型改成字符串,和传入的实际值匹配:
// 原代码 const onUnityMessageController = ({ results }: { results: string }) => { console.log('onUnityMessage', results); } // 修改后 const onUnityMessageController = (results: string) => { console.log('onUnityMessage', results); }
方案2:调整传入参数的结构,匹配函数期望的对象类型
如果需要保留函数的参数结构,调用时把字符串包装成包含results字段的对象:
// 原调用代码 onUnityMessageController(result.nativeEvent.message) // 修改后调用 onUnityMessageController({ results: result.nativeEvent.message })
额外优化建议
可以给route.params定义明确的TypeScript接口,避免route: any的模糊类型,提升代码安全性:
interface RouteParams { shape: string; color: string; } // 组件参数类型修改 const Unity = ({ navigation, route }: { navigation: any, route: { params: RouteParams } }) => { // 后续代码可安全访问route.params.shape和color const { shape, color } = route.params; // ... 其余逻辑 }
内容的提问来源于stack exchange,提问作者PiotrB
相关产品推荐
相关产品推荐

