TypeScript、型の判定

class Foo {}
class Bar extends Foo {}

const foo = new Foo();
const bar = new Bar();

console.log(typeof foo);
// -> 'object'
console.log(foo.constructor === Foo);
// -> true
console.log(foo instanceof Foo);
// -> true
console.log(foo instanceof Object);
// -> true

console.log(bar.constructor === Foo);
// -> false (継承元はわからない)
console.log(bar.constructor === Bar);
// -> true
console.log(bar instanceof Foo);
// -> true
console.log(bar instanceof Bar);
// -> true