在Angular 2模板中,安全操作符?.可以工作,但在component.ts中不能使用TypeScript 2.0.此外,安全导航操作员(!.)不工作.

例如:

这是Typescript

if (a!.b!.c) { }

编译成这个JavaScript

if (a.b.c) { }

但当我运行它时,我会得到以下错误:

无法读取未定义的属性"b"

除了以下内容,还有其他 Select 吗?

if (a && a.b && a.b.c) { }

推荐答案

自从TypeScript 3.7发布以来,您现在可以使用可选链接.

Property example:

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

这相当于:

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

此外,您可以拨打:

Optional Call

function(otherFn: (par: string) => void) {
   otherFn?.("some value");
}

只有当otherFn不等于nullundefined时,才会调用otherFn

Usage optional chaining in IF statement

这是:

if (someObj && someObj.someProperty) {
  // ...
}

现在可以用这个来代替

if (someObj?.someProperty) {
  // ...
}

参考:https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html

Typescript相关问答推荐

类型脚本不会推断键的值类型

使用前的组件渲染状态更新

Angular 过滤器形式基于某些条件的数组控制

带有微前端的动态React路由问题

无法从应用程序内的库导入组件NX Expo React Native

用泛型类型覆盖父类函数导致类型y中的Property x不能赋给基类型Parent中的相同属性."'''''' "

接口的额外属性作为同一接口的方法的参数类型'

如何将类型从变量参数转换为返回中的不同形状?

带占位符的模板文字类型何时扩展另一个?

类型脚本`Return;`vs`Return unfined;`

无法从Chrome清除还原的初始状态数据

TypeScrip-将<;A、B、C和>之一转换为联合A|B|C

为什么我的条件类型不能像我预期的那样工作?

参数属性类型定义的REACT-RUTER-DOM中的加载器属性错误

角效用函数的类型推断

是否存在类型联合的替代方案,其中包括仅在某些替代方案中存在的可选属性?

声明文件中的类型继承

是否可以强制静态方法将同一类型的对象返回其自己的类?

两个名称不同的相同打字界面-如何使其干燥/避免重复?

记录的子类型<;字符串,X>;没有索引签名