检查后,打字稿对象可能是“未定义”的

时间:2020-10-04 11:46:52

标签: reactjs typescript react-beautiful-dnd immer

快速问题-为什么Typescript仍然认为它将是未定义的?

在我的应用程序中添加以下代码后,在行draft.splice(result.destination.index, 0, draggedItem);上出现Typescript错误,提示result.destination对象可能未定义。键入以下内容时,部分正确:DragUpdate.destination?: DraggableLocation | undefined。但是,我在此函数的开头进行了检查,因此在给定的行将永远不会是undefined

const onDragEnd = useCallback((result: DropResult) => {
        // do nothing if no destination
        if (!result.destination) return;
        setState((prevState: IOrderCard[]) =>
            produce(prevState, draft => {
                const draggedItem = draft[result.source.index];
                draft.splice(result.source.index, 1);
                draft.splice(result.destination.index, 0, draggedItem);
                return draft;
            })
        );
    }, []);

这是带有钩子的React应用,也使用immerreact-beautiful-dnd

1 个答案:

答案 0 :(得分:0)

我无法评论Alexsey L.所说的内容,但更快速的解决方法是使用!当您知道将要定义的内容时。