第2クラス


宣言タイプスクリプトの変数


タイプスクリプトでは、JavaScriptと同じ方法で変数を宣言できます.constletvarです.
次のコードを見てみましょうか?
function outer() {
  let score = 0;
  score = 30;
  score = "30";
}
javascriptでは、これは正常に動作するコードのように見えます.
ただし、typescriptでは、最初に0を宣言すると、scoredataTypenumberにキャプチャされ、文字列「30」が入力されると、赤い線が出力されます.

ただし、変数に値が指定されていない場合、デフォルトではanyとなりますので、任意の値を入力できます.
function outer() {
  let score;  //아무 타입도 지정이 안되어서 any타입
  score = 30;
  score = "30";
}

しかし、anyタイプを指定した場合、なぜタイプスクリプトを使用しなければならないのでしょうか.

を選択します。


上記の自動位置決めタイプに加えて、直接タイプを指定することもできます.
function outer() {
  let score:number;  //score의 타입은 number!
  score = 30;
  score = "30";
}
このようにタイプを指定する方式をタイプAnnotationと呼ぶ.
constのような場合、const score = 100;は常に初期化値が必要なので、別のタイプを指定する必要はなく、タイプが自動的に定義されるのではないでしょうか.

データ型


JAvascript(es 6)は6種類のオリジナルタイプ、1種類のリファレンスタイプ、計7種類のDataTypeをサポートしていますよね?
  • Boolean
  • Number
  • String
  • Object
  • Array
  • Tuple
  • Enum
  • Any
  • Void
  • Null
  • Undefined
  • Never
  • タイプスクリプトは、JavaScriptなどの他のタイプもサポートします.
    まずletで変数を宣言し、タイプを指定します.
    let numValue:number;
    let stringValue:string;
    let booleanValue:boolean;
    let undefinedValue:undefined;
    let nullValue:null;
    let objValue:object;
    let symbolValue:symbol;

    number

    numValue = 3.3; //실수도 담을 수 있다.
    numValue = ""; //문자열은 error

    string

    stringValue = "hello"; //singlq quoto
    stringValue = "hello"; //double quoto
    stringValue = `hello`; //template literal

    boolean

    booleanValue = true;

    undefined & null

    undefinedValue = null;
    undefinedValue = undefined;
    nullValue = undefined;
    nullValue = null;
    undefinedとnullはすべてのタイプのサブタイプであるため、すべてのタイプに割り当てることができます.
    子タイプは、親タイプによって定義された変数に割り当てることができます.numValue=nullすべてのタイプの親タイプはanyであり、すべてのタイプはanyに割り当てることができます.

    obj

    objValue = {name: "jay"};
    objValue = {};
    objValue = new String(33); //객체가 반환되기 때문에 가능

    パターン内のタイプ定義


    アレイのタイプは、次のように定義できます.
    let nameList: string[];
    let nameList2<string>  //제네릭 사용방식
    string[]:文字列配列
    nameListは文字列からなる配列であるため、数値を入力すると次のエラーが表示されます.

    push()でエラーがないかどうかを確認することもできます.次に示すように、他のデータ型の値を入力します.

    混ぜて使いたいならlet nameList: any[];もできます(ただしanyの使用には慎重に!)

    オブジェクト内のタイプ定義


    オブジェクトは、オブジェクトを宣言するときにタイプを定義できます.
    let user1: {name: string; score: number};
    上記の場合、user 1には文字列nameと数値型の点数しか含まれないのではないでしょうか.
    nameとscoreを持つオブジェクトでなければなりません.
    この場合inline typeと呼ばれ、毎回タイプを定義する必要があるため、interfaceなどの定義タイプを使用することができます.

    tuple


    配列と同様に、配列項目の数とインデックスごとの要素タイプを固定できます.
    let tuple2: [number, string];
    tuple2 = [1, "hello"];
    上記の場合、tuple2numberstringからなる2つの値の配列である.
    インデックスと同じデータ型が含まれていない場合は、エラーが発生する可能性があります.

    整理する


    タイプスクリプトにはJavaScriptと同様のタイプがあり、anyというトップレベルのタイプがあるため、どのタイプの変数にもサブタイプがあります.
    逆にnullとundefinedは最低タイプであるため、定義された変数に他の親タイプを割り当てることができます.