我的languageSchema可以是一个字符串或带有'Etc'键的对象。我有一个接口:
let getLanguageSchema = (language: string): string => languagesSchemas[language];
interface IReduxProps {
languageSchema:
string
| {
Etc: {
listEmpty: string;
};
};
}
组件:
let EmptyList: React.FC<IReduxProps> = (props) => {
let { languageSchema } = props;
return (
<div className="mt-5 text-center grey">
<i className="now-ui-icons files_paper fs-4" />
<h3 className="mb-0">{languageSchema.Etc.listEmpty}</h3>
</div>
);
};
let mapStateToProps = (state: IReduxState): IReduxProps => ({
languageSchema: getLanguageSchema(state.common.language),
});
TypeScript compiler说道:'属性'Etc'在类型'string '上不存在|{ Etc:{ listEmpty:string; };}'。 类型“string”上不存在属性“Etc”。
为可以是对象或字符串的属性设置适当类型的正确方法是什么?
1条答案
按热度按时间cmssoen21#
有一个可能解决这个问题的解决方案是
IReduxProps
属性只接受字符串JSON.parse(JSON.stringify(languageSchema))
。接口:
组件