TypeScript文字列型の違い
TypeScriptにおけるStringとstringの違いについて
TypeScriptでは、Stringとstringの2つの文字列型が存在します。これらは一見同じように見えるかもしれませんが、実際には異なる意味を持ちます。
String型
- 例
let str1: String = new String("Hello");
- プロパティとメソッド
String型には様々なプロパティとメソッドが定義されており、文字列の操作や変換を行うことができます。 - クラス型
Stringはクラス型であり、文字列オブジェクトを表します。
- 例
let str2: string = "World";
- 値
string型は直接文字列の値を保持します。 - プリミティブ型
stringはプリミティブ型であり、文字列の値そのものを表します。
重要な違い
- 互換性
String型とstring型は相互に変換できますが、場合によっては注意が必要です。 - パフォーマンス
string型はString型よりも一般的にパフォーマンスが優れています。 - 型チェック
TypeScriptの型チェッカーは、Stringとstringを異なる型として扱います。
いつどちらを使うべきか
- 文字列オブジェクトが必要な場合
特定の機能やプロパティが必要な場合にString型を使用します。 - 一般的な文字列操作
通常はstring型を使用します。
let str1: String = new String("Hello");
// プロパティの使用
console.log(str1.length); // 5
// メソッドの使用
console.log(str1.toUpperCase()); // HELLO
let str2: string = "World";
// 文字列の操作
console.log(str2.substring(1, 3)); // or
// テンプレートリテラル
let greeting = `Hello, ${str2}!`;
console.log(greeting); // Hello, World!
互換性
// String型からstring型への変換
let str3: string = str1;
// string型からString型への変換
let str4: String = new String(str2);
重要な注意点
テンプレートリテラル
- 例
let name = "Alice"; let greeting = `Hello, ${name}!`; console.log(greeting); // Hello, Alice!
- 文字列の組み込み
テンプレートリテラルを使用することで、文字列と変数を直接組み込むことができます。
文字列メソッド
- 例
let str = "Hello, World!"; console.log(str.toUpperCase()); // HELLO, WORLD! console.log(str.substring(0, 5)); // Hello
- 文字列の操作
TypeScriptの文字列型には様々なメソッドが提供されており、文字列の操作や変換を行うことができます。
正規表現
- 例
let emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; let email = "[email protected]"; console.log(emailRegex.test(email)); // true
- 文字列のパターンマッチ
正規表現を使用して、文字列内の特定のパターンを検索したり、置換したりすることができます。
文字列インターフェース
- 例
interface Person { firstName: string; lastName: string; } let person: Person = { firstName: "John", lastName: "Doe" };
- カスタム文字列型
文字列インターフェースを使用して、特定の文字列の構造やプロパティを定義することができます。
文字列型ガード
- 例
function isString(value: any): value is string { return typeof value === "string"; } let str: string | number = "Hello"; if (isString(str)) { console.log(str.toUpperCase()); // HELLO }
- 文字列型のチェック
文字列型ガードを使用して、変数が特定の文字列型であるかどうかをチェックすることができます。
typescript