有没有像?在TypeScript中可以检查变量是否为空或未定义为Kotlin?像
return redirect()->action(
'UserController@index', ['email' => $email]
);
答案 0 :(得分:17)
不,截至目前,安全导航操作系统仍未在Typescript中实现: https://github.com/Microsoft/TypeScript/issues/16
然而,根据最新的标准化会议记录,它已被提出,所以也许v3:)
答案 1 :(得分:12)
是的,从Typescript 3.7开始,您现在可以通过optional-chaining
执行此操作person?.getName()?.firstName
被编译到
let firstName = person === null || person === void 0 ? void 0 : (_person$getName = person.getName()) === null || _person$getName === void 0 ? void 0 : _person$getName.firstName;
注意检查是否为空。如果例如将人员定义为
,这将按预期工作let person:any = null; //no runtime TypeError when calling person?.getName()
但是如果将人定义为
let person:any = {};//Uncaught TypeError: person.getName is not a function
答案 2 :(得分:6)
我遇到过同样的情况,以下情况对我有用。
首先,我定义了一个单独的类,其属性可以是null
:
export class Foo {
id: number; //this can be null
}
然后在我的主课程中,我将属性foo
设置为这个新类型:
foo: Foo
之后,我能够像这样使用它:
var fooId = (this.foo || ({} as Foo)).id;
这是我在当前版本的TypeScript中获得空传播的最接近的。
答案 3 :(得分:2)
实际上这与discussion中提到的javascript null safety this answer有关。我猜他们希望在获得打字稿之前在javascript上支持它。
答案 4 :(得分:0)
实际的好答案在Andreas'评论中。从Typescript 3.7起,您的示例将从下面实现:
person?.getName()?.firstName ?? "None"
请参见https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#nullish-coalescing
答案 5 :(得分:0)
它不仅在打字稿中受支持(从 3.7.2 版开始)。 现在 javascript 也支持它(自 ES2020 起)。
在实践中,这意味着您可以在 Angular 等框架中使用它 (since v9 which supports typescript 3.7)。
但特别是现在它在 ES2020 规范中,我们将看到它 无处不在。
答案 6 :(得分:0)
如果没有电子邮件,这会将 item
设置为 null
:
let item = user?.email;