Typescript 可选链接错误:Expression expected.ts(1109)

新手上路,请多包涵

我正在尝试在 Typescript + React Native 中进行可选链接。

假设我有以下接口:

 interface Bar {
  y: number
}

interface Foo {
  x?: Bar
}

我尝试运行以下命令:

  const test: Foo = {x: {y: 3}};
 console.log(test.x?.y);

VSCode 会在 ?. 下显示错误: Expression expected.ts(1109)

你知道为什么会发生这种情况或者我应该如何解决它?谢谢。

原文由 Toma Radu-Petrescu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 3.1k
2 个回答

对于那些想知道的人,自 2019 年 10 月起,TypeScript 3.7(Beta)现在可以使用可选链接( ? 运算符)。您可以通过运行以下命令来安装该版本:

 npm install typescript@beta

发行说明 中所述,这就是您可以使用运算符的方式。

 let x = foo?.bar.baz();

这相当于

let x = (foo === null || foo === undefined) ?
    undefined :
    foo.bar.baz();

除了可选链接之外,其他有趣的功能包括 Nullish Coalescing( ?? 运算符)。

更新(2019 年 11 月)

TypeScript 的可选链现在正式可用。安装最新版本的打字稿应该允许您访问很酷的新功能。

 npm install typescript

对于那些正在使用 VS Code 的人,请参阅 Austin 的关于让它与新的 TypeScript 版本一起工作的出色答案

对于那些正在使用 WebStorm 的人,您需要配置 TypeScript 以使用项目安装的 TypeScript 版本。

 Preferences -> Languages & Frameworks -> TypeScript

此外,如果您使用的是旧版本的 WebStorm,则在尝试使用 Nullish Coaslescing 运算符 ( ?? ) 时可能会遇到错误/警告。要解决此问题,您需要安装 WebStorm 2019.2.4 或任何比上述更新的版本。

原文由 wentjun 发布,翻译遵循 CC BY-SA 4.0 许可协议

TypeScript 3.7 已经发布,但稳定的 VS Code 使用的是旧版本。

尝试 + Shift + p 并选择 Select TypeScript Version 。如果不是 3.7+,那就是问题所在。最简单的解决方法是安装 ms-vscode.vscode-typescript-next 扩展。它将提供一个夜间 TypeScript 版本供 VS Code 使用(可能需要重新启动 VS Code,仅供参考)。

当 VS Code 默认获得 TypeScript 3.7+ 时,您需要记住删除扩展。

有关更多详细信息,请参阅 https://code.visualstudio.com/docs/typescript/typescript-compiling#_using-newer-typescript-versions

原文由 Austin 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题