型を調べる方法を色々試す。
型ガード という手法?で調べる。
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)
その他
型ガード 参照。