「Type Script」Type Script公式文書の整理-1


概要
プログラムを有効にするには、数値、文字列、構造体、ブール値などの簡単なデータ単位が必要です.TypeScriptはJavaScriptとほぼ同じデータ型をサポートしており、列挙タイプは使いやすいようにしています.
ブライアン
最も基本的なデータ型はJavaScriptとType Scriptでブール値と呼ばれる真/偽(true/false)値です.
let isDone: boolean = false;
数値(Number)
JavaScriptと同様に、Type Scriptのすべての数字は浮動小数点数です.浮動小数点のタイプはnumberです.16進数と10進数のほか、TypeScriptはECMAScript 2015で紹介されている2進数と8進数の文字もサポートしています.
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;
文字列(String)
デフォルトでは、WebページやサーバなどのアプリケーションをJavaScriptとして作成する場合、テキストデータを処理する必要があります.他の言語と同様に、TypeスクリプトはStringを使用してテキストデータ型を表します.JavaScriptと同様に、Type Scriptも文字列データを囲むために二重引用符(""")または二重引用符(")を使用します.
let color: string = "blue";
color = 'red';
テンプレート文字列では、複数行にわたって文字列を作成し、式を含めることもできます.この文字列は、${expr}と同じ形式の式を含むことができる、ダイヤルバック/オファーバック(`)文字で囲まれています.
let fullName: string = `Bob Bobbington`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ fullName }.
I`ll be ${ age + 1 } years old next month.`;
上は次の文の宣言と同じです.
let sentence: strung = "Hello, my name is "+ fullName + ".\n\n" +
  "I'll be " + (age + 1) + " years old next month.";
アレイ
TypeScriptを使用すると、JavaScriptのようにこれらの値を配列で処理できます.2つの方法でタイルタイプを使用できます.1つ目の方法は、配列要素を表すタイプの後に[]を書くことです.
let list: number[] = [1, 2, 3];
2つ目の方法はジェニーリック配列タイプを使用することです.Array:
let list: Array<number> = [1, 2, 3];  
デュアル(Tuple)
パターンを使用すると、要素のタイプと数が固定された配列を表すことができます.すべての要素が同じタイプである必要はありません.たとえば、数値と文字列のペアの値がほしい場合があります.
// 튜플 타입으로 선언
let x: [string, number]
// 초기화
x = ["hello", 10];		// 성공
// 잘못된 초기화
x = [10, "hello"];		// 오류  
指定したインデックス内の要素にアクセスすると、このタイプが表示されます.
console.log(x[0].substring(1));	// 성공
console.log(x[1].substring(1));	// 오류, 'number'에는 'substring'이 없습니다.
指定したインデックス以外のインデックスの要素にアクセスすると、エラーが発生し、失敗します.
x[3] = "world";	// 오류, '[string, number]'타입에는 프로퍼티 '3'이 없습니다.
  
console.log(x[5].toString()); // '[string, number]' 타입에는 프로퍼티 '5'가 없습니다.
列挙(Enum)
JavaScriptの標準データ型セットと使用可能なデータ型はenumです.C#と同じ言語では、enumは値セットにより良い名前を付けることができます.
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
デフォルトではenumは0からメンバー番号です.メンバーの1つの値を手動で設定することで、番号を変更できます.たとえば、上記の例を0からではなく1から番号付けに置き換えることができます.
enum Color {Red = 1, Green, Blue}
let c: Color = Color.Green;
すべての値を手動で設定することもできます.
enum Color {Red = 1, Green = 2, Blue = 4}
let c: Color = Color.Green;
Enumの有用な機能の1つは、指定された値を使用してenumメンバーの名前を決定することです.たとえば、上記の例では、値2が上記のColor Enumメンバーと一致することを知らない場合、一致する名前が表示される場合があります.
enumColor {Red = 1, Green, Blue}
let colorName: string = Color[2];
  
console.log(colorName);	// 값이 2인 'Green'이 출력된다.
Any
アプリケーションを作成するときに、不明なタイプを表す必要がある場合があります.これらの値は、ユーザから受信したデータやサードパーティのリポジトリなどの動的コンテンツから得られる場合があります.この場合、タイプチェックは必要ありませんが、コンパイル時にチェックしてください.このため、任意のタイプを使用できます.
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // 성공
どのタイプも既存のJavaScriptを使用する強力な方法であり、コンパイル中に漸進的なタイプチェックを行うことも、チェックを行わないこともできます.あるいは、他の言語では、Objectが似たような役割を果たすことができると考えられます.ただし、Objectとして宣言された変数では、その変数に値を割り当てることができますが、メソッドが実際に存在しても、任意に呼び出すことはできません.
let notSure: any = 4;
notSure.ifItExists();	// 성공, ifItExists는 런타임엔 존재할 것입니다.
notSure.toFixed();	// 성공, toFixed는 존재합니다. (하지만 컴파일러는 검사하지 않음)
  
let prettySure: Object = 4;
prettySure.toFixed();	// 오류: 프로퍼티 'toFixed'는 'Object'에 존재하지 않습니다.
注記:Do'sおよびDon'tsで説明したように、no-オリジナルオブジェクトの代わりにオブジェクトを使用しないでください。

また、タイプの一部しか知らず、タイプ全体を知らない場合は、どのタイプも便利です.たとえば、異なるタイプの配列を使用できます.
let list: any[] = [1, ture, "free"];
  
list[1] = 100;
Void
voidは、任意のタイプが存在しないことを示すため、任意のタイプの逆タイプです.voidは、通常、関数に戻り値がない場合に戻りタイプを表すために使用されます.
function warnUser(): void {
	console.log("This is my warning message");
}
voidをタイプ変数として宣言するのは、null(--strictNullChecks)を使用しない場合にのみ、変数または未定義の変数を割り当てることができるため、役に立たない.
let unusable: void = undefined;
unusable = null;	// 성공 '--strictNullChecks'을 사용하지 않을때만
Null and Undefined
Type Scriptはundefinedとnullを使用し、それぞれ独自のタイプ名undefinedとnullを使用します.voidのようにそれ自体が役に立つことはほとんどありません.
// 이 밖에 이 변수들에 할당할 수 있는 값이 없습니다!
let u: undefined = undefined;
let n: null = null;
デフォルトではnullとundefinedは他のすべてのタイプのサブタイプです.これはnullやundefinedをnumberなどのタイプに割り当てることができることを意味します.
ただし、--strictNullChecksを使用すると、nullとundefinedはanyとそれぞれのタイプにのみ割り当てられます.(例外の場合、未定義のvoidに割り当てることができます.)これにより、多くの一般的なエラーを防止できます.この場合、stringまたはnullまたはundefinedを許可する場合は、unionタイプのstring|null|undefinedを使用できます.
Unionタイプは高度なトピックで、後述する章で説明します.
Aa注:可能であれば、--strictNullChecksを使用することをお勧めします。しかし、マニュアルの目的に基づいて使用しないと仮定します。

Never
Neverタイプは、絶対に起こり得ないタイプを表します.たとえば、neverは、関数式または矢印関数式で常にエラーが発生するか、絶対に返さない戻りタイプです.変数がタイプによって保護され、タイプが得られないほど収縮した場合、newタイプが得られます.
Neverタイプは、すべてのタイプに割り当てられるサブタイプです.ただし、どのタイプもnewに割り当てることができます.または、サブタイプではありません.(自分を排除しない)誰にも割り当てられない.
neverのいくつかの例を返します.
// never를 반환하는 함수는 함수의 마지막에 도달할 수 없다.
function error(message: string): never {
 	throw new Error(message); 
}
  
// 반환 타입이 never로 추론된다.
function fail() {
 	return error("Something failed"); 
}
  
// never를 반환하는 함수는 함수의 마지막에 도달할 수 없다.
function infiniteLoop(): never {
 	while (true) {
  	}
}
オブジェクト
objectは元のタイプではないことを示します.たとえば、number、string、boolean、bigint、symbol、null、undefinedなどです.
objectタイプを使うと、object.API(createなど)をよりよく表示します.たとえば、
declare function create(o: object | null): void;
  
create({ prop: 0 });	// 성공
create(null):		// 성공

create(42);		// 오류
create("string");	// 오류
create(false);		// 오류
create(undefined);	// 오류
タイプブレークスルー
TypeScriptよりも開発者が値をよく知っている場合があります.通常、あるエンティティの実際のタイプが現在のタイプよりも具体的である場合に発生します.
タイプ断言は、コンパイラに「私を信じて、私は何をしているか知っています」と教える方法です.タイプブレークスルーは、他の言語のタイプブレークスルー(成形ブレークスルー)と似ていますが、データの特別なチェックや再編成は行われません.これは実行時には影響しません.コンパイラのみが完全に使用できます.タイプスクリプトは、開発者が必要な特定のチェックを実行したことを示します.
タイプ断言には2つの形式があります.1つは、angle-backet構文です.
let someValue: any = "this is a string";

let strLength: number = (<string>someValue).length;
もう1つはas構文です.
let someValue: any = "this is a string";

let strLength: number = (someValue as string).length;
上記の2つの例は同じです.どの製品を選ぶかは主に好みにかかっている.ただし、TypeScriptをJSXと併用する場合は、asスタイルでの断言のみが許可されます.
letについて
これまでよりよく知られているJavaScriptのvarキーワードではなくletキーワードを使用していることがわかります.letキーワードはJavaScript ES 2015で紹介されていますが、varよりも安全なので、現在は標準とされています.後で詳しく説明しますが、JavaScriptの問題の多くはletを使用して解決されます.そのため、できればvarではなくletを使用する必要があります.