Typescript可选链接错误:预期表达式.ts(1109)

时间:2019-02-09 22:32:21

标签: typescript react-native visual-studio-code

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

假设我具有以下界面:

interface Bar {
  y: number
}

interface Foo {
  x?: Bar
}

,我尝试运行以下命令:

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

VSCode将在?.下显示错误,并显示以下内容: Expression Expect.ts(1109)

您是否知道为什么会这样或我应该如何解决?谢谢。

3 个答案:

答案 0 :(得分:19)

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

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

您将要记得在VS Code默认情况下获得TypeScript 3.7+时删除扩展名。

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

答案 1 :(得分:3)

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

npm install typescript@beta

release notes所述,这就是使用运算符的方式。

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's excellent answer,以使其与新的TypeScript版本一起使用。

对于使用 WebStorm 的用户,您将需要配置TypeScript以使用项目的已安装TypeScript版本。

Preferences -> Languages & Frameworks -> TypeScript

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

答案 2 :(得分:-1)

使用命令

查找打字稿版本
tsc -v

如果它与工作空间版本不匹配,则需要使用以下命令在全球范围内安装Typescript最新版本。

npm install typescript@latest -g 

npm update typescript@3.7 -g

注意:这是在单个项目上的情况。如果您正在使用多个项目,请使用Visual Studio代码扩展。 谢谢@cameron