我有这样的东西:

interface ISome {
    myValue: number | string;
    // some more members
}

我有一个函数,它将访问一个ISomemyValue它的some.myValue是一个数字,并像这样使用它:
function (some: ISome): number { // I accept only ISome with myValue type number
    return some.myValue + 3;
}

typescript编译器按预期进行编译,因为是数字或字符串。
当然,我可以使用union类型来检查:
function (some: ISome): number { // I could use a guard
    if (typeof some.myValue === "number") {
        return some.myValue + 3;
    }
}

但这不是我想要的,因为我需要经常这样做。

最佳答案

您可以用交集类型覆盖并集类型,并在其中指定myValue的类型:

function someFunction(some: ISome & {
    myValue: number
}): number {
    return some.myValue + 3; // No error
}

关于typescript - 在 typescript 中指定联合体类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44592947/

10-12 15:10