TypeScriptの型の安全性

タイプガードチェックとは



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


以上です。