TypeScript (javascript) で型を調べる

型を調べる方法を色々試す。
型ガード という手法?で調べる。

typeof

let test: string = "hello"
console.log(typeof test)// string

ex) switch 文で使用

let test: string = "hello"
switch (typeof test) {
case "string":
	console.log("stringです")
	break
default:
	console.log("defaultです")
	break
}

できないこと

下記のような Test という型を定義したものを typeof で調べると、
Test ではなく、 object と出力される。

なので、型を調べるといっても、
作った型を調べるのは typeof ではできない。

type Test {
	hello: string
}
let test: Test = {
	hello: "world"
}
console.log(typeof test)// object

instanceof

型を調べるというか、
そのオブジェクトがどこのオブジェクトに関わっているか調べる。

type Sample = {}
class SampleClass implements Sample {}
class SampleClass2 implements Sample {}

let sample: Sample = new SampleClass

console.log(sample instanceof SampleClass)// true
console.log(sample instanceof SampleClass2)// false
console.log(sample instanceof Object)// true

できないこと

これも結局 type で型を作ってもそれを調べることはできない。

type Sample = {}
class SampleClass implements Sample {}

let sample: Sample = new SampleClass

// 'Sample' only refers to a type, but is being used as a value here.
console.log(sample instanceof Sample)

その他

型ガード 参照。