我正在尝试在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)
您是否知道为什么会这样或我应该如何解决?谢谢。
答案 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