我已经多次收到"Object is possibly“错误,通常我会使用安全的"if语句”,以防它返回null。
我有以下函数:
const ModalOverlay = (props: any[]) => {
const overlayEl = useRef(null);
useEffect(() => {
overlayEl.current.focus();
});
return ;
}
But overlayEl.current gets the error "Object is not defined". So I've tried:
if (!overlayEl) {
return null
} else {
useEffect(() => {
overlayEl.current.focus();
});
return ;
}
Which didn't work. I've tried also:
overlay && overlayEl.current.focus();
Any hints would be highly appreciated! Thanks发布于 2019-04-15 04:55:22
当你声明const typescript = useRef( null );使它的类型为null,因为这是它能提供的最好的推断,它可以提供那么多的信息,给typescript更多的信息,它就会像预期的那样工作。
试试看..。
const overlayEl = useRef(null);或者,一些语法糖,如果你不关心它的未定义是这样做的。
const overlayEl = useRef(document.createElement("div"))使用上面的语法,所有常见的DOM方法都只返回默认值,如"0“,即overlayEl.offsetWidth、getBoundingClientRect等。
用法:
if(overlayEl.current) {
// will be type HTMLDivElement NOT HTMLDivElement | null
const whattype = overlayEl.current;
}这种工作方式是类型脚本静态分析足够聪明,可以找出
检查"guards“是否为null,因此它将把该类型作为一个可能的类型从
在那些括号里。
https://stackoverflow.com/questions/55677600
复制相似问题