ウォーターフォールは間違っている!私がアジャイル開発をエンジニアに勧める理由
TypeScriptのString, Number, Boolean型が非推奨となっていた件
今回はString, Number, Boolean型がTypeScriptにて非推奨となっていたので、その件に関して紹介します。
目次
非推奨となった理由
オブジェクトラッパー型(String, Number, Boolean)は、プリミティブ型(string, number, boolean)とは異なる挙動をします。この違いが予期せぬバグを引き起こす可能性があるため、非推奨となりました。
問題のある書き方
// 非推奨の書き方
let name: String = "TypeScript";
let age: Number = 12;
let isActive: Boolean = true;
// これらは異なる型として扱われる
const str: string = "hello";
const objStr: String = new String("hello");
console.log(typeof str); // "string"
console.log(typeof objStr); // "object"
推奨される書き方
// 推奨される書き方
let name: string = "TypeScript";
let age: number = 12;
let isActive: boolean = true;
よくある間違い
1. メソッドチェーンでの型指定
// 間違い
function processString(str: String) {
return str.toLowerCase();
}
// 正しい
function processString(str: string) {
return str.toLowerCase();
}
2. ジェネリクスでの使用
// 間違い
type Container<T extends Number> = {
value: T;
}
// 正しい
type Container<T extends number> = {
value: T;
}
オブジェクトラッパー型が必要な場合
極めて稀なケースですが、実際のJavaScriptオブジェクトインスタンスが必要な場合は使用できます:
// 特殊なケース
const numberObject: Number = new Number(123);
console.log(Object.getPrototypeOf(numberObject));
ESLintでの制限方法
{
"rules": {
"@typescript-eslint/ban-types": ["error", {
"types": {
"String": {
"message": "Use string instead",
"fixWith": "string"
},
"Number": {
"message": "Use number instead",
"fixWith": "number"
},
"Boolean": {
"message": "Use boolean instead",
"fixWith": "boolean"
}
}
}]
}
}
まとめ
String, Number, Boolean型の代わりにプリミティブ型のstring, number, booleanを使用することで、より安全でパフォーマンスの良いコードが書けます。新規プロジェクトではプリミティブ型を使用し、既存のコードは徐々に移行することをおすすめします。
- 内蔵GPUのRadeon 680M,760MでCS:GO2は動く?|AMD Ryzen 7 6850Hの実力を検証!
- 内蔵GPUのRadeon 680M,760MでCOD BO6は動く?|AMD Ryzen 7 6850Hの実力を検証!
- 内蔵GPUのRadeon 680M,760MでVALORANTは動く?|AMD Ryzen 7 6850Hの実力を検証!
- 内蔵GPUのRadeon 680M,760MでAPEXは動く?|AMD Ryzen 7 6850Hの実力を検証!
- 内臓GPUの性能が良いミニPCをコスパ順でまとめてみた
- TypeScriptで非推奨になっている機能一覧
- TypeScriptのexport defaultが非推奨となっていた件
- TypeScriptのNamespaceが非推奨となっていた件
- TypeScriptのthis.constructorが非推奨となっていた件
- TypeScriptのコンストラクタ引数でのpublic/privateが非推奨となっていた件
- TypeScriptのvarキーワードが非推奨となっていた件
- TypeScriptのFunction型が非推奨となっていた件
- TypeScriptのString, Number, Boolean型が非推奨となっていた件
- TypeScriptのanyが非推奨となっていた件
- TypeScriptのenumが非推奨となっていた件
- 内蔵GPUのメモリ割り当てを増やす方法【2024年版】
- ウォーターフォールは間違っている!私がアジャイル開発をエンジニアに勧める理由
- IT業界の酷い下請け構造は誰のせいなのか
- IT業界の下請け構造が酷すぎる!!
- クラウディアと他のクラウドソーシングサービスの比較
- Zigプログラミング言語とは?RustやC++との違いを解説
- めっちゃ早いPython?Nimというプログラミング言語について
- Rubyの静的型付け版?Crystalってどんな言語なのか解説
- Elixirは開発しづらい?Gleamへ移行しよう – 開発体験が劇的に改善
- Gleamの基本的な構文とデータ型
- Gleamの環境構築方法[Linux]
- Gleam言語でのWebアプリ開発ロードマップ
- MacBook Pro M1の外部ディスプレイちらつき現象について
- MacBook Air M2で4K60Hz外部ディスプレイを使用する方法
- Ryzen 7040HS Phoenix搭載LinuxマシンのGPUドライバー設定ガイド
- 注目を集める新星Gleam言語!Elixirとの違いから見る特徴と可能性
- DellとHP、買うならどっちがマシ?徹底比較ガイド
- サブドメインのメリット・デメリットを徹底解説!
- 中古ドメインって実際どうなの?メリット・デメリットを解説
- ノートパソコン バッテリー持ち ランキング【2024年4月】徹底比較!
- なぜ安い?workドメインが安価な理由を徹底解説!
- メキシコペソ投資ってどうなの?過去データで見る特徴とリスク
- なぜ私がトルコリラ投資をおすすめしないのか – データで見る実態と注意点
- 【2024年4月最新】世界の通貨別金利ランキング!今一番利回りが高い通貨はコレだ!
- 金利5%台!?米ドル保有で高金利を受け取る方法
- axumのルーティングを整理して別ファイルに分ける方法
- Acitx-webとAxumってどっちがいいの?RustのWebフレームワーク比較
- 次期C#?注目のプログラミング言語F#を徹底解説
- 電気ストーブと石油ストーブはどっちがいい?費用や特徴を徹底比較!
- ゲーミングキーボードって正直あんまり変わらないよねって話
- 【2024年版】今後はやるマイナープログラミング言語5選|現役エンジニアが解説
- Rustの現状の課題と発展途上な部分
- 私がRustがC++より優れていると感じる理由
- Rustプログラミング言語完全学習ロードマップ【2024年版】
- おすすめプログラミングスクール比較【2024年版】現役エンジニアが徹底解説