TypeScript初心者でもわかる!String型とstring型の使い分け
TypeScriptにおけるString型とstring型の違い
String型とstring型は、基本的に同じ意味で、文字列を表す型です。
唯一の違いは、String型はオブジェクト型であるのに対し、string型はプリミティブ型であることです。
詳細:
- String型:
String
というクラスのインスタンスを表します。- メソッドやプロパティを持ちます。
- 例:
.length
,.toUpperCase()
,.charAt()
- 以下のように、
new
演算子を使って生成できます。const str1: String = new String("Hello");
- string型:
- 文字列リテラルそのものを表します。
- 例:
"Hello"
,'World'
- 以下のように、文字列リテラルを直接記述できます。
const str2: string = "Hello, world!";
- ほとんどの場合、string型で十分です。
- String型のメソッドやプロパティが必要な場合のみ、String型を使用します。
例:
// 文字列の長さを取得する
const str: string = "Hello, world!";
const length: number = str.length; // OK
// 文字列を大文字に変換する
const str: String = new String("Hello, world!");
const upperCase: string = str.toUpperCase(); // OK
// 文字列リテラルを直接使用
const str: string = "Hello, world!";
console.log(str); // "Hello, world!" // OK
// 1. String型とstring型の変数を定義
const str1: String = new String("Hello");
const str2: string = "World";
// 2. String型のメソッドを使用
console.log(str1.length); // 5
// 3. string型はメソッドを使用できない
// console.log(str2.length); // エラー: プロパティ 'length' は 'string' 型には存在しません。
// 4. String型とstring型の比較
console.log(str1 === str2); // false
// 5. String型をstring型に変換
const str3: string = str1.toString();
console.log(str3); // "Hello"
// 6. string型をString型に変換
const str4: String = new String(str2);
console.log(str4); // "World"
実行結果:
5
エラー: プロパティ 'length' は 'string' 型には存在しません。
false
Hello
World
解説:
- 1行目:
String型
とstring型
の変数を定義しています。 - 2行目:
String型
の変数に対してlength
メソッドを使用しています。
このコードを実行することで、String型
とstring型
の違いをより深く理解することができます。
補足:
String型
はオブジェクト型なので、===
演算子で比較すると、値だけでなく、参照も比較されます。
文字列比較
// 厳密な比較 (値と参照)
const str1: String = new String("Hello");
const str2: String = new String("Hello");
console.log(str1 === str2); // false
// 緩い比較 (値のみ)
const str3: string = "Hello";
const str4: string = "Hello";
console.log(str3 === str4); // true
型ガード
function isString(value: any): value is string {
return typeof value === "string";
}
const str1: any = "Hello";
if (isString(str1)) {
// str1 は string 型であることが保証される
console.log(str1.length); // 5
}
型アサーション
const str1: any = "Hello";
const str2 = str1 as string;
console.log(str2.length); // 5
typeof 演算子
const str1: any = "Hello";
const str2 = typeof str1 === "string" ? str1 : "";
console.log(str2); // "Hello"
String.prototype.valueOf()
メソッドを使用すると、String型
のオブジェクトをstring型
に変換できます。String()
コンストラクタを使用すると、string型
の値をString型
のオブジェクトに変換できます。
String型
とstring型
は、基本的に同じ意味ですが、オブジェクト型とプリミティブ型の違いがあるため、いくつかの点で違いがあります。
これらの違いを理解することで、TypeScript での文字列操作をより効率的に行うことができます。
typescript