タイプガードチェックとは
TypeScriptでは、
型の安全性が求められます。
TypeScriptシステムは、
TypeScriptコードを、
型のあるJavaScriptコードとして、
できるだけ簡単に記述することで、
安全性を高めています。
型をチェックするためには、
ナローイングにより、
具体的にタイプを絞り込みます。
ナローイングとは、
タイプガードと呼ばれる特別なチェック、
if(typeof 調べる変数 === "調べる型")
を行い、タイプを絞り込むことです。
タイプガードには、
typeofの他に、
instanceof 、
in、
等も使用されます。
チェックする型には、
次のようなものがあります。
"string"
"number"
"bigint"
"boolean"
"symbol"
"undefined"
"object"
"function"
ステートメントの記号としては、
===、 !==、 ==、 !=
(リテラル値の場合)
も使われます。
typeofの例は、次の様になります。
function typeGuard(x: number | string) {
if (typeof x === 'string') {
console.log(x.substr(1));
}
}
次の例は、instanceofです。
class Dog1 {
x = "コリー";
}
class Dog2 {
y = "スピッツ";
}
function sample(arg: Dog1 | Dog2) {
if (arg instanceof Dog1) {
console.log(arg.x);
}
if (arg instanceof Dog2) {
console.log(arg.y);
}
}
sample(new Dog1());
sample(new Dog2());
コリー
スピッツ
次はinの例になります。
interface S {
x: number;
}
interface T {
y: string;
}
function sample2(p: S | T) {
if ('x' in p) {
console.log(p.x);
}
else {
console.log(p.y);
}
}
let test:S={x:5}
sample2(test);
5
以上です。