Javascript typescript(错误TS2322):键入';{type:ErrorPageType;}';不可分配给类型';ErrorPageType.SIGNUP';

Javascript typescript(错误TS2322):键入';{type:ErrorPageType;}';不可分配给类型';ErrorPageType.SIGNUP';,javascript,typescript,Javascript,Typescript,TS新手,我正在尝试创建一个类型,该类型可以作为道具从另一个组件传递到这个组件,如:,以有条件地呈现正确的视图。这是我的密码: export enum ErrorPageType { ACCESS = "access", GENERIC = "generic", } interface ErrorProps { type?: ErrorPageType; } const getErrorType = (t

TS新手,我正在尝试创建一个类型,该类型可以作为道具从另一个组件传递到这个组件,如:
,以有条件地呈现正确的视图。这是我的密码:

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;
导出枚举错误页面类型{
ACCESS=“ACCESS”,
GENERIC=“GENERIC”,
}
接口错误道具{
类型?:ErrorPageType;
}
常量getErrorType=(类型?:ErrorPageType){
开关(类型){
案例ErrorPageType.ACCESS:
返回;
案例ErrorPageType.GENERIC:
返回;
违约:
返回;
}
}
常量ErrorPage=(类型?:ErrorProps)=>{
返回getErrorType(类型)
};
导出默认错误页面;

我得到了错误:
error TS2322:Type'{Type:ErrorPageType;}'不可分配给Type'(intrinsiattributes&ErrorPageType.ACCESS)|(intrinsiattributes&ErrorPageType.FSSO)|(intrinsiattributes&ErrorPageType.GENERIC)|(intrinsiattributes&ErrorPageType.SIGNUP)。类型“{Type:ErrorPageType;}”不可分配给类型“ErrorPageType.SIGNUP”。
我不确定原因。非常感谢您的帮助

您的
ErrorPage
函数正在获取一个
ErrorProps
类型值作为输入。您不能将其直接传递给
getErrorType
函数,因为它需要
ErrorPageType
类型输入

您应该这样修改:

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

这使我在这一行遇到了一个新错误:
returngetErrorType(type.type)我更新了答案以允许可选类型。原因是您定义的函数类似于“type?”:ErrorProps,即您的“type”所以我们必须考虑NULL类型,我也忘了我的答案。你是一个救生员!花了太多的时间把我的头撞在墙上。你能解释为什么我需要挖掘<代码>类型< /代码>并使它成为代码>类型吗?类型< /代码>?我的假设是当我通过<代码> <代码>……然后在Error Par组件(上)根据
枚举中定义的内容验证它的值,但似乎在接口中定义
(type?:ErrorPageType;)
实际上将obj(
ErrorPageType{}
)分配给属性
类型
,因此它看起来像
类型:{type:ErrorPageType}
---正确吗?是的,您的理解是正确的。在接口内分配
类型
定义了对象的结构,该对象的
类型
属性为
错误页面类型