告诉varible是联合类型中的哪一种

时间:2019-08-08 06:25:28

标签: typescript

Sequelize.ARRAY(Sequelize.TEXT)       // Defines an array. PostgreSQL only.
Sequelize.ARRAY(Sequelize.ENUM)       // Defines an array of ENUM. PostgreSQL only.

我想检查arg是X还是Y,最直观的方法似乎是检查arg中是否有y,但是TSC不允许这样做。

正确的方法是什么?

1 个答案:

答案 0 :(得分:2)

在这种情况下,in type guard最有效:


interface X {
    x: number
    z: string
}
interface Y {
    x: number
    y: number
}

type XY = X | Y
function foo(arg: XY) {
    if ('y' in arg) {
        console.log(arg.x + arg.y)
    }
}

Play