说我有以下界面:
interface Example {
optionalString?: string
// ... other props
}
我有一个以Example
作为参数的函数。我知道返回类型的语法是虚假的。
function ensureDefined (example : Example) : Example & {optionalString: string}
此功能的目的是确保定义optionalString
的属性example
并返回该对象。在这种情况下,每次我希望访问optionalString
属性时,都不需要执行if(example.optionalString){}
。
我曾尝试创建接口扩展,如下所示:
interface ExampleExtension extends Example {
optionalString: string // notice no '?'
// ... other props
}
但是,这个变量不能分配回具有基本接口类型的变量。
我把这个复杂化了吗?我应该只拥有两个具有两种不同类型的单独变量吗?