Skip to content

instanceof 操作符缩小

JavaScript 有一个运算符来 instanceof 检查一个值是否是另一个值的“实例”。更具体地,在JavaScript 中 x instanceof Foo 检查 x 的原型链是否含有 Foo.prototype 。虽然我们不会在这里深入探讨,当我们进入 类(class) 学习时,你会看到更多这样的内容,它们大多数可以使用 new 关键字实例化。 正如你可能已经猜到的那样, instanceof 也是一个类型保护,TypeScript 在由 instanceof 保护的分支中实现缩小。

typescript
function logValue(x: Date | string) { 
  if (x instanceof Date) { 
    console.log(x.toUTCString()); 
  } else { 
    console.log(x.toUpperCase()); 
  } 
}

logValue(new Date()) // Mon, 15 Nov 2021 22:34:37 GMT 
logValue('hello ts') // HELLO TS