【发布时间】:2021-11-10 13:58:34
【问题描述】:
我是打字稿的新手
我有一个接口 ABC,我希望 propA 或 propB 在其中。它还有其他属性
interface ABC {
propA: string
propB: string
propC: string
propD?: string
}
我该怎么做?
我是根据https://stackoverflow.com/a/40510700/10433835这个答案做的
interface ABC {
propC: string
propD?: string
}
interface A extends ABC {
propA: string
}
interface B extends ABC {
propB: string
}
export type final = A | B
但是当我做这样的事情时
function somethingCalled (a:A) {
}
const b:final = req.body
somethingCalled(b)
它抛出以下错误 'final' 类型的参数不可分配给 'interface A' 类型的参数。
【问题讨论】:
-
编译器是正确的。您告诉它“
propA或propB存在于我的变量中”,然后您尝试调用一个函数,该函数要求该变量上存在propA。如果有propB呢?该功能将无法正常工作。 -
Silvio,你能告诉我如何解决它吗?
-
还要注意
interface A extends ABC和interface B extends ABC... 这完全没用,因为 ABC 已经有了propA和probB。你的意思是不延长它吗? -
@Samathingamajig 更新了问题
标签: typescript