打字稿 - 可选类型

问题描述 投票:2回答:1

如何使用Typescript中的可选类型?例如,我有一个名为Conversation的对象:

class Conversation {
    lastMessage?: Message
}

class Message {
    text: string
}

我希望通过text对象从Message对象获得可空的Conversation

const lastMessageText?: string = conversation?.lastMessage.text

但是这种语法不起作用。谈话结束后我不能写?

typescript
1个回答
2
投票

有一个建议将?.运算符添加到JavaScript中,但在规范过程中还没有进一步在Typescript中实现(因为Typescript希望保持JavaScript的超集,团队通常不会添加建议的功能,直到它们是在最后阶段)。

您可以使用&&运算符来实现类似的效果,尽管更详细:

const conversation: Conversation = {

}
const lastMessageText = conversation.lastMessage && conversation.lastMessage.text // is of type string| undefined

编辑

目前,可选的链接JS功能尚未成为第3阶段,typescript将仅支持表达级语法的第3阶段的JS提议(当涉及到他们自己做事的类型时)。来自latest GitHub issue请求可选更改:

在通过向TS添加功能而多次刻录之后,只有在最后一秒才从我们身下拉出语义地毯,严重上没有任何数量的upvotes会让我们添加一个可能会在某些时候彻底改变运行时行为的功能在将来。

© www.soinside.com 2019 - 2024. All rights reserved.