首页 > 解决方案 > 使用适当的键 TypeScript 键入字符串或对象

问题描述

我的 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 编译器说:'属性'Etc' 不存在于类型'string | {等:{listEmpty:字符串;}; }'。“字符串”类型上不存在属性“等”。

为可以是对象或字符串的属性设置适当类型的正确方法是什么?

标签: typescriptreact-typescript

解决方案


推荐阅读