Tom*_*scu 30 typescript react-native visual-studio-code
我正在尝试在 Typescript + React Native 中进行可选链接。
假设我有以下接口:
interface Bar {
y: number
}
interface Foo {
x?: Bar
}
Run Code Online (Sandbox Code Playgroud)
我尝试运行以下命令:
const test: Foo = {x: {y: 3}};
console.log(test.x?.y);
Run Code Online (Sandbox Code Playgroud)
VSCode 将?.在以下语句下显示错误:Expression expected.ts(1109)
您知道为什么会发生这种情况或我应该如何解决吗?谢谢。
Aus*_*tin 40
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。
wen*_*jun 15
对于那些想知道的人,自?2019 年 10 月起,TypeScript 3.7(测试版)现在可以使用可选链(运算符)。您可以通过运行以下命令来安装该版本:
npm install typescript@beta
Run Code Online (Sandbox Code Playgroud)
这就是您可以使用运算符的方式,如发行说明中所述。
let x = foo?.bar.baz();
Run Code Online (Sandbox Code Playgroud)
这相当于
let x = (foo === null || foo === undefined) ?
undefined :
foo.bar.baz();
Run Code Online (Sandbox Code Playgroud)
除了 Optional Chaining 之外,其他有趣的功能包括 Nullish Coalescing(??操作符)。
更新(2019 年 11 月)
TypeScript 的可选链接现已正式可用。安装最新版本的 typescript 应该允许您访问很酷的新功能。
npm install typescript
Run Code Online (Sandbox Code Playgroud)
对于那些使用VS Code 的人,请参考Austin关于让它与新的 TypeScript 版本一起工作的优秀答案。
对于那些使用WebStorm 的人,您需要配置 TypeScript 以使用您的项目已安装的 TypeScript 版本。
Preferences -> Languages & Frameworks -> TypeScript
Run Code Online (Sandbox Code Playgroud)
此外,如果您使用的是旧版本的 WebStorm,则在尝试使用 Nullish Coaslescing 运算符 ( ??)时可能会遇到错误/警告。要解决此问题,您需要安装WebStorm 2019.2.4或任何比上述更新的版本。
| 归档时间: |
|
| 查看次数: |
28687 次 |
| 最近记录: |