强制定义可选的接口属性

时间:2018-08-29 21:40:20

标签: javascript typescript interface optional

说我有以下界面:

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
}

但是,这个变量不能分配回具有基本接口类型的变量。

我把这个复杂化了吗?我应该只拥有两个具有两种不同类型的单独变量吗?

1 个答案:

答案 0 :(得分:1)

接口扩展名对我有效on the playground。如果仍然无法解决问题,请添加足以使问题重现的代码。