在javascript中,babel plugin支持可选链接运算符。
但我无法在Typescript中找到如何做到这一点。任何的想法?
在撰写本文时,TypeScript不支持可选的链接运算符。请参阅有关TypeScript问题跟踪器的讨论:https://github.com/Microsoft/TypeScript/issues/16
作为警告,此运算符的语义仍然非常不稳定,这就是TypeScript尚未添加它的原因。今天针对Babel插件编写的代码可能在未经警告的情况下改变将来的行为,从而导致难以处理的错误。我通常建议人们不要开始使用其行为尚未明确定义的语法。
虽然TypeScript和社区支持这个运算符,但是在TC39巩固current proposal(在撰写本文时是在stage 1
)时,我们将不得不使用替代方案。
有一种方法可以接近可选的链接,而不会牺牲开发工具:https://github.com/rimeto/ts-optchain
This article记录了创建者在尝试镜像本地链接运算符时能够实现的目标:
- 使用与链接属性访问密切相关的语法
- 遍历失败时,提供默认值的简洁表达式
- 启用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提倡这个操作员所做的所有工作!