dst*_*ley 8 javascript typescript
我有一个非常复杂的对象,它有多个属性,我想扩展和覆盖特定的属性。
interface ComplicatedObject {
propertyOne: string,
propertyTwo: null
}
interface MoreComplicatedObject extends ComplicatedObject {
propertyTwo: string
}
Run Code Online (Sandbox Code Playgroud)
本质上,通过将字符串值分配给 ,将具有该类型的对象ComplicatedObject转换MoreComplicatedType为propertyTwo。我想避免使用联合类型,propertyTwo因为所有使用的调用propertyTwo都假定它是一个字符串,而不是空值,所以我宁愿不必在我访问的每个实例中都包含类型检查propertyTwo。
如何扩展接口并覆盖现有属性的类型?
art*_*tem 15
只有在扩展接口中的类型与属性的原始类型兼容时,您才能在扩展接口时覆盖属性类型。通常的情况是当您使用更严格的类型覆盖它时。
这意味着您必须有远见,并使用与所有可能的扩展兼容的类型声明原始属性。在您的情况下,您可以使用联合类型ComplicatedObject:
interface ComplicatedObject {
propertyOne: string,
propertyTwo: null | string
}
interface MoreComplicatedObject extends ComplicatedObject {
propertyTwo: string
}
Run Code Online (Sandbox Code Playgroud)
或者您可以CompicatedObject按照此答案中的描述进行通用。
| 归档时间: |
|
| 查看次数: |
10613 次 |
| 最近记录: |