【发布时间】:2020-06-24 04:14:24
【问题描述】:
当我检查对象是否被直接声明时,它显然工作得很好,但我想知道是否可以将此检查提取到变量中并使 TypeScript 仍然可以理解它。
import React from "react";
interface Props {
obj?: {
val: string;
}
}
function A({ obj }: Props) {
const hasObj = !!obj;
return (
<>
<p>This works fine:</p>
<div>{!!obj && obj.val}</div>
<p>This throws an error (Object is possibly 'undefined'):
<div>{hasObj && obj.val}</div>
</>
)
}
有可能让它这样工作吗?
【问题讨论】:
-
为什么不直接使用
<div>{obj?.val}</div>? -
这只是一个简单的例子,我需要它来进行更复杂的检查
-
考虑尝试类型谓词。它们仅适用于函数,但它们可能会对您有所帮助。 typescriptlang.org/docs/handbook/…
标签: reactjs typescript