为什么我不能在联合上执行 instanceof?

Dav*_*len 6 typescript1.4

在这种情况下它不允许 instanceof - 为什么?

public assign(color: string | ColorProperty | RgbProperty | RgbColor): void {
    super.assign(color);

    if (color instanceof ColorProperty) {
Run Code Online (Sandbox Code Playgroud)

ps - 我爱工会!!!

blo*_*ish 2

似乎instanceof关键字必须具有包含在联合中的类型any才能在函数中使用它。
我的猜测是编译器需要处理所有类型保护返回 false 的情况 - 因此类型被推断为any.

function assign(_color: any | string | ColorProperty | RbgProperty) {
    if (_color instanceof ColorProperty) {
    }
    // else may not be a string | ColorProperty | RbgProperty
}
Run Code Online (Sandbox Code Playgroud)