考虑以下代码:
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上创建功能请求吗?
答案 0 :(得分:1)
可以使用问号{field?: type}
使对象属性为可选。
因此您的功能将是:
function myFunction( object_argument: {optional_property?: string}) {
const fallback: string = 'Foo'
return object_argument.optional_property || fallback
}