在javascript中,babel plugin支持可选链接运算符。
但我无法在Typescript中找到如何做到这一点。有什么想法吗?
答案 0 :(得分:21)
在撰写本文时,TypeScript不支持可选的链接运算符。请参阅有关TypeScript问题跟踪器的讨论:https://github.com/Microsoft/TypeScript/issues/16
作为警告,此运算符的语义仍然非常非常,这就是TypeScript还没有添加它的原因。今天针对Babel插件编写的代码可能在未经警告的情况下改变将来的行为,从而导致难以处理的错误。我通常建议人们不要开始使用其行为尚未明确定义的语法。
答案 1 :(得分:4)
答案 2 :(得分:3)
尽管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而所做的所有工作!