Javascript react本机元素主题的声明合并

Javascript react本机元素主题的声明合并,javascript,typescript,react-native,react-native-elements,Javascript,Typescript,React Native,React Native Elements,我在我的react native应用程序中使用react native元素 我的应用程序使用ThemeProvider包装,将主题传递给所有组件 <SafeAreaProvider> <ThemeProvider theme={Theme}> <Loader visible={loader.loading} text={loader.message} absolute={true} /> <RootNavigation />

我在我的react native应用程序中使用react native元素

我的应用程序使用ThemeProvider包装,将主题传递给所有组件

<SafeAreaProvider>
 <ThemeProvider theme={Theme}>
    <Loader visible={loader.loading} text={loader.message} absolute={true} />
    <RootNavigation />
  </ThemeProvider>
</SafeAreaProvider>
对于值,react原生元素的原始主题提供了有效性。例如,我可以使用

const theme = useTheme()
theme.colors.primary
但是当我想添加一些新属性,比如primaryDark,我会得到一个linter错误

Object literal may only specify known properties, and 'primaryDark' does not exist in type 'RecursivePartial<Colors>'.ts(2322)

Object literal只能指定已知属性,并且“RecursivePartial”类型中不存在“primaryDark”。ts(2322)
在react的文档中,native元素是关于声明合并的一部分,但我不明白如何将其归档


有人能帮我吗?

嗯,声明合并仍然有效。这似乎是lib的一个bug

他们的文档说,您可以在
模块“react native elements”(反应本地元素)
中增加
颜色
界面。但目前(截至2021年4月18日,第3.3.2版),该接口实际上隐藏在
模块“react native elements/dist/config/colors”中,而不是直接暴露在顶层,这很奇怪

我建议你向他们的回购协议提交问题。没关系,已经有人了

在我的机器上测试,以下解决方案有效

从“React”导入React
从“react native elements”导入{useTheme,ThemeProvider}
声明模块“react native elements/dist/config/colors”{
导出接口颜色{
primaryDark:字符串
主光:弦
}
}
常量ChildComp=()=>{
const theme=useTheme()

theme.theme.colors.primaryDark//什么是linter错误?对象文字可能只指定已知属性,并且“primaryDark”在“RecursivePartial”类型中不存在。ts(2322)看起来他们刚刚修复了。谢谢你的回答,因为颜色很好。但是我如何合并其他一些未在FullTheme中定义的属性呢?例如,如果我想要像theme.theme.globalStyle这样的属性,请转到这个文件
node\u modules/react-native-elements/dist/config/theme.d.ts
。你会看到where-about在所有与主题相关的界面中。找到它们,然后一个接一个地应用相同的技巧。这是一个不幸的情况,我知道哦,我没有仔细阅读。你想增强
FullTheme
本身吗?同样的,增强
interface FullTheme{}
就像使用
颜色一样
@Stevetro查看我的更新我以前尝试过的方式,但是我会在我的主题中得到一个新错误。主题的ts=>“类型[…..主题属性…]缺少类型“FullTheme”中的以下属性:头像、附件、徽章、底片和其他29个。”
Object literal may only specify known properties, and 'primaryDark' does not exist in type 'RecursivePartial<Colors>'.ts(2322)