Typescript 和之间的区别?对于一个对象

Typescript 和之间的区别?对于一个对象,typescript,Typescript,我想知道是否有一个真正的区别使用?和&&在typescript中 例如: interface InnerData { name: string title: string } interface OuterData { someInnerData: undefined | InnerData } const myData: OuterData = { someInnerData: { name: 'This is a name', title: 'This i

我想知道是否有一个真正的区别使用?和&&在typescript中

例如:

interface InnerData {
  name: string
  title: string
}

interface OuterData {
  someInnerData: undefined | InnerData
}

const myData: OuterData = {
  someInnerData: {
    name: 'This is a name',
    title: 'This is a title'
  }
}

const bookTitleOneWay = myData.someInnerData?.title

const bookTitleAnotherWay = myData.someInnerData && myData.someInnerData.title

console.log('bookTitleOneWay', bookTitleOneWay)
console.log('bookTitleAnotherWay', bookTitleAnotherWay)
在书名里我用的是什么?运算符在BookTitle中时使用另一种方式使用&&运算符。 两者产生相同的结果,但我想知道:

这两个运营商之间真的有区别吗?除了语法 是否有一个我们应该使用的标准? 这两个运营商之间真的有区别吗

对测试其左侧操作数以查看它是否为truthy,即除0、NaN、false、null或undefined之外的任何值。相比之下,可选链接?在您使用的上下文中,它只检查左侧操作数是否为null和未定义

在您的特定示例中,它可能不会导致任何差异,因为someInnerData被类型化为未定义的| InnerData,而InnerData被定义为对象,但运算符执行不同的操作

是否有一个我们应该使用的标准

对正在测试的数据使用正确的一个。如果要进行真实性检查,请使用&&。如果需要空/未定义的检查,请使用可选的链接

这两个运营商之间真的有区别吗

对测试其左侧操作数以查看它是否为truthy,即除0、NaN、false、null或undefined之外的任何值。相比之下,可选链接?在您使用的上下文中,它只检查左侧操作数是否为null和未定义

在您的特定示例中,它可能不会导致任何差异,因为someInnerData被类型化为未定义的| InnerData,而InnerData被定义为对象,但运算符执行不同的操作

是否有一个我们应该使用的标准


对正在测试的数据使用正确的一个。如果要进行真实性检查,请使用&&。如果您想要空/未定义的检查,请使用可选链接。

谢谢,我编辑了我的问题,包括您关于语法的观点。忽略我之前的评论-我误解这是一个三元vs&&问题,显然不是。谢谢,我编辑了我的问题,包括你关于语法的观点。忽略我之前的评论-我误解这是一个三元vs&&问题,显然不是。