typescript1.4 - 为什么我不能在联合上执行 instanceof?

标签 typescript1.4

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

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

    if (color instanceof ColorProperty) {

ps - 我爱工会!!!

最佳答案

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

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

关于typescript1.4 - 为什么我不能在联合上执行 instanceof?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28975200/

相关文章:

javascript - 无法在模块中找到 'ng'... - 损坏的 Intellisense?

typescript1.4 - 何时在 typescript 中使用类型别名和接口(interface)?

javascript - typescript 表格重置()不起作用

angularjs - Typescript + Angular "controller as"Sidewaffle 模板开箱即用

typescript - TypeScript 模块上的 getter/setter

typescript - TypeScript 规范中 AB|C 中的 AB 是什么意思?

typescript - 导入外部定义

javascript - TypeScript 真的是 JavaScript 的超集吗?

Typescript:联合类型中的接口(interface)导致 Instanceof 错误