代码之家  ›  专栏  ›  技术社区  ›  HolyMoly

类型脚本(错误TS2322):类型“{Type:ErrorPageType;}”不可分配给类型“ErrorPageType”。注册'

  •  0
  • HolyMoly  · 技术社区  · 5 年前

    TS新手,我正在尝试创建一个类型,然后可以作为道具从另一个组件传递到这个组件,如: <Error type={ErrorPageType.GENERIC}/> 有条件地呈现正确的视图。这是我的代码:

    export enum ErrorPageType {
            ACCESS = "access",
            GENERIC = "generic",
        }
    
    interface ErrorProps {
        type?: ErrorPageType;
    }
    
    const getErrorType = (type?: ErrorPageType) {
        switch (type) {
            case ErrorPageType.ACCESS:
                return <AccessErrorPage />;
            case ErrorPageType.GENERIC:
                return <GenericErrorPage />;
            default:
                return <GenericErrorPage />;
        }
    }
    
    const ErrorPage = (type?: ErrorProps) => {
        return getErrorType(type)
    };
    
    
    export default ErrorPage;
    

    我得到了一个错误: error TS2322: Type '{ type: ErrorPageType; }' is not assignable to type '(IntrinsicAttributes & ErrorPageType.ACCESS) | (IntrinsicAttributes & ErrorPageType.FSSO) | (IntrinsicAttributes & ErrorPageType.GENERIC) | (IntrinsicAttributes & ErrorPageType.SIGNUP)'. Type '{ type: ErrorPageType; }' is not assignable to type 'ErrorPageType.SIGNUP'. 我真的不知道为什么。非常感谢您的帮助!

    1 回复  |  直到 5 年前
        1
  •  1
  •   Eranga Heshan    5 年前

    你的 ErrorPage 函数得到了一个 ErrorProps 输入值。您不能直接将其传递给 getErrorType 函数,因为它期待 ErrorPageType 输入。

    您应该这样修改:

    const ErrorPage = (type?: ErrorProps) => {
        return getErrorType(type?.type)
    };
    
    推荐文章