问号 Typescript 变量

Question mark Typescript variable

我见过这样的代码片段:

export interface IUser {
    email?: string;
    firstName?: string;
    lastName?: string;
}

但是为什么变量名后缀是问号呢?此代码段是使用 mongodb 和 Typescript 的示例的一部分。

答案可能在那里,但我似乎使用了错误的关键字,因为我找不到它。

这意味着它们可以存在但不必存在。它允许可选的字段名称。可以说是很常用了。

一个示例用途是允许网站上的用户有一个可选的显示名称。

如果没记错的话,是表示optional,也就是可以为null。

在 TypeScript 中,<name>?: <typename> shorthand 用于 <name>: <typename> | undefined

这向类型系统表明符号可能包含指定类型的值或者它可能包含值undefined(类似于 null)。

这在启用(TypeScript 2 中的新功能)--strictNullChecks 选项时很重要。 Null- and undefined-aware types 选项的文档可能是您应该开始理解为什么有用的地方。