【基礎から応用まで】TypeScriptにおける型変換:booleanへの変換 - 豊富なサンプルコードと実践的な解説
TypeScriptにおける型変換:booleanへの変換
主な変換方法は以下の2つです。
二重否定オペレータ !!
最も簡潔でよく使われる方法です。任意の値に対して2回否定を行うことで、その値の真偽値を返します。
const num = 10;
const isPositive = !!num; // true
const str = "";
const isEmpty = !!str; // true
Boolean() コンストラクタ
値を明示的に boolean
型に変換するコンストラクタです。型ガードとの併用によく用いられます。
const num = 0;
const isZero = Boolean(num); // false
const str = "true";
const isTrueString = Boolean(str); // true
上記以外にも、以下のような方法で型変換を行うことができます。
- 論理演算子:
&&
または||
演算子の結果をboolean
型として返す - 型アサーション:
as boolean
を使って型を明示的に断言する
注意点
- 空文字や
0
などの値は、論理上はfalse
とみなされますが、Boolean()
コンストラクタで変換するとtrue
になる場合があります。 - 型変換を行う際には、元の値の型や意図する挙動を理解した上で適切な方法を選択することが重要です。
TypeScriptにおける型変換:booleanへの変換 - サンプルコード
function isPositive(num: number): boolean {
return !!num; // num を二重否定して真偽値を返す
}
const num1 = 10;
const isPositive1 = isPositive(num1); // true
const num2 = 0;
const isPositive2 = isPositive(num2); // false
function isTruthy(value: any): boolean {
return Boolean(value); // value を Boolean コンストラクタで変換
}
const str1 = "Hello";
const isTruthy1 = isTruthy(str1); // true
const str2 = "";
const isTruthy2 = isTruthy(str2); // false
論理演算子を使った変換
function isEven(num: number): boolean {
return num % 2 === 0; // num が 2 で割り切れるかどうかで真偽値を返す
}
const num1 = 8;
const isEven1 = isEven(num1); // true
const num2 = 7;
const isEven2 = isEven(num2); // false
function isOldEnough(age: number): boolean {
return age >= 20; // age が 20 以上かどうかで真偽値を返す
}
const age1 = 25;
const isOldEnough1 = isOldEnough(age1); // true
const age2 = 18;
const isOldEnough2 = isOldEnough(age2); // false
型アサーションを使った変換
function isPrime(num: number): boolean {
if (num <= 1) return false; // 1 以下の数は素数ではない
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) return false; // 2 以上num以下の数で割り切れるなら素数ではない
}
return true; // 上記の条件を満たさなければ素数
}
const num = 13;
const isPrime1: boolean = isPrime(num); // 型アサーションを使って型を明示的に断言
console.log(isPrime1); // true
これらのサンプルコードはあくまでも一例であり、状況に応じて様々な方法で型変換を行うことができます。
TypeScriptにおける型変換:booleanへの変換 - その他の方法
論理演算子の結果を返す
論理演算子 (&&
または ||
) の結果は、常に true
または false
となるため、暗黙的に boolean
型として扱えます。
const num1 = 10;
const num2 = 20;
const isPositive = num1 > 0 && num2 > 0; // true
const str1 = "Taro";
const str2 = "";
const hasName = str1.length > 0 || str2.length > 0; // true
const num = 10;
const isEven = num % 2 === 0; // true
const str1 = "apple";
const str2 = "orange";
const isEqual = str1 === str2; // false
型ガードを用いることで、変数の型をより詳細に絞り込み、boolean
型かどうかを判定することができます。
function isString(value: any): value is string {
return typeof value === "string";
}
function isNumber(value: any): value is number {
return typeof value === "number";
}
function print(value: string | number) {
if (isString(value)) {
console.log(`文字列: ${value}`);
} else if (isNumber(value)) {
console.log(`数値: ${value}`);
} else {
console.error("型が不明です");
}
}
print("Hello"); // 文字列: Hello
print(10); // 数値: 10
print(true); // 型が不明です
instanceof
演算子を用いて、変数が特定のクラスのインスタンスかどうかを判定し、boolean
値を取得することができます。
class Person {
name: string;
constructor(name: string) {
this.name = name;
}
}
function isPerson(value: any): value is Person {
return value instanceof Person;
}
const person = new Person("Taro");
const notPerson = 10;
console.log(isPerson(person)); // true
console.log(isPerson(notPerson)); // false
特に、論理演算子や比較演算子を用いる場合は、常に true
または false
を返すような式であることを確認する必要があります。
また、型ガードや instanceof
演算子を使用する場合は、型システムの仕組みを理解していることが前提となります。
TypeScriptでは、様々な方法で値を boolean
型に変換することができます。
それぞれの方法の特徴と注意点、そして状況に応じて適切な方法を選択することが重要です。
typescript