【问题标题】:Type 'number | undefined' is not assignable to type 'number'输入\'数字| undefined\' 不可分配给类型 \'number\'
【发布时间】:2023-02-22 02:13:19
【问题描述】:
const initialState =  {
    id: 0,
    studentId : 0,
    targets : []
}

const [program, setProgram] = useState(initialState);

在我下面做的一个功能中 setProgram({...program,studentId= selectedStudent?.id})

选择的学生定义如下: selectedStudent: 学生 |不明确的;

我不想更改 selectedStudent: Student |不明确的;

我可以在 initialState 中做什么来消除错误

【问题讨论】:

  • setProgram({ ...program, studentId = selectedStudent?.id ?? 0 })

标签: typescript


【解决方案1】:

您已将 studentId 属性隐式定义为保存一个数字。

selectedStudent?.id 可能是一个数字,也可能是 undefined

由于 undefined 不是数字,因此会出现错误。

有几件事你可以做以消除错误,但无法判断是什么正确的要做的事情是根据你提供的信息。

测试该值是否为undefined并提供默认数字

setProgram({
    ...program,
    studentId: selectedStudent?.id ?? 0
});

使用允许属性未定义的显式类型

type Program = {
    id: number;
    studentId?: number;
    targets: Something[]
}

const initialState: Program =  {
    id: 0,
    studentId : 0,
    targets : []
}

【讨论】:

    【解决方案2】:
    const initialState : any =  {
        id: 0,
        studentId : 0,
        targets : []
    }
    
    const [program, setProgram] = useState(initialState);
    

    将工作。

    【讨论】:

    • 使用 any 本质上不是使用 TypeScript。这是一个廉价而令人讨厌的黑客,会回来咬你一口。
    • 是的,我知道这是作弊
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 2022-10-22
    • 1970-01-01
    • 2023-01-11
    • 2023-01-18
    • 1970-01-01
    相关资源
    最近更新 更多