打字稿中的可选链接运算符

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

在javascript中,babel plugin支持可选链接运算符。

但我无法在Typescript中找到如何做到这一点。任何的想法?

javascript typescript optional chaining
2个回答
21
投票

在撰写本文时,TypeScript不支持可选的链接运算符。请参阅有关TypeScript问题跟踪器的讨论:https://github.com/Microsoft/TypeScript/issues/16

作为警告,此运算符的语义仍然非常不稳定,这就是TypeScript尚未添加它的原因。今天针对Babel插件编写的代码可能在未经警告的情况下改变将来的行为,从而导致难以处理的错误。我通常建议人们不要开始使用其行为尚未明确定义的语法。


3
投票

虽然TypeScript和社区支持这个运算符,但是在TC39巩固current proposal(在撰写本文时是在stage 1)时,我们将不得不使用替代方案。

有一种方法可以接近可选的链接,而不会牺牲开发工具:https://github.com/rimeto/ts-optchain

This article记录了创建者在尝试镜像本地链接运算符时能够实现的目标:

  1. 使用与链接属性访问密切相关的语法
  2. 遍历失败时,提供默认值的简洁表达式
  3. 启用IDE代码完成工具和编译时路径验证

在实践中它看起来像这样:

import { oc } from 'ts-optchain';

// Each of the following pairs are equivalent in result.
oc(x).a();
x && x.a;

oc(x).b.d('Default');
x && x.b && x.b.d || 'Default';

oc(x).c[100].u.v(1234);
x && x.c && x.c[100] && x.c[100].u && x.c[100].u.v || 1234;

请记住,一旦TypeScript采用该提案,就可能不需要像这样的替代方案。

另外,非常感谢Ryan Cavanaugh为TC39提倡这个操作员所做的所有工作!

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