打字稿能否自动检测短路评估?

时间:2018-10-25 18:28:32

标签: typescript

考虑以下代码:

function myFunction( object_argument: {} | {optional_property: string}) {
  const fallback: string = 'Foo'
  return object_argument.optional_property || fallback
}

这给了我一个错误:

  

类型'{} |中不存在属性'optional_property'| {   optional_property:字符串; }'。属性“ optional_property”不   存在于类型“ {}”上。

我发现一种解决方法是在出现问题的位置之前添加显式类型声明:

function myFunction( object_argument: {} | {optional_property: string}) {
  const fallback: string = 'Foo'
  return (<{optional_property}>object_argument).optional_property || fallback
}

但是,从我的角度来看,很明显我正在执行"short-circuit"评估,因此,“ optional_property”的存在实际上是可选的。

是否可以使打字稿自动找到它而无需隐式声明? 我应该在GitHub上创建功能请求吗?

1 个答案:

答案 0 :(得分:1)

可以使用问号{field?: type}使对象属性为可选。 因此您的功能将是:

function myFunction( object_argument: {optional_property?: string}) {
  const fallback: string = 'Foo'
  return object_argument.optional_property || fallback
}