[TIL 210823] 🏷️Typescript Handbookで新しく知ったポイント1


タイプスクリプトマニュアルで新しく知った1点


The Basics


  • JavaScriptはダイナミックタイプ言語です.したがって、タイプエラーなどの問題があるかどうかを判断するには、コードを実行する必要があります.タイプスクリプトは静的タイプ化(static typing)によりjavascriptコードを実行する前にタイプ推定を行うことができます.

  • tscはタイプスクリプトコンパイラですtsc hello.ts:タイプスクリプトにエラーがある場合は、エラーを出力します.hello.tsファイルをjsファイルのhelloにコンパイルします.jsファイルを出力として生成します.tsc --noEmitOnError hello.ts:エラーが報告された場合、出力は出力されません.すなわち,エラーがない場合にのみ出力を生成できる.tsc --target es2015 hello.ts:タイプスクリプトは基本的にJavaScriptのES 3構文を使用してコンパイルされ、--targetオプションを使用してECMAScriptバージョンを指定できます.

  • タイプスクリプトに明確なタイプ名を付ける必要がない場合があります.let msg = "hello there!";:msgは明らかに文字列です

  • ただし、タイプコメントでは、プログラム実行時の動作は絶対に変更されません(実行時とは関係ありませんx)
  • noImplicitAny:noImpliceAnyオプションは、任意のタイプの暗示式と宣言でエラーが発生します.タイプスクリプトはanyとして指定された変数のタイプをチェックしません.したがって、anyは最も寛容なタイプと見なすことができますが、anyタイプはタイプスクリプトの根本的な目的を失効させ、エラーを引き起こすことが多いです.そのためできるだけ避けるべきタイプです.(unknownで代用)
  • strictNullChecks:nullとundefinedはより明確です.nullとundefinedが明確でないと、制御不能なエラーになる可能性があるので、この2つを区別することが重要です!
  • Everyday Types


  • オプションタイプ(?)使用するときは、定義されていないかどうかを確認することが重要です.(JavaScriptからpropに値を渡さないと、実行時にその値がUndefindになります)

  • Union Typeは、2種類以上のタイプからなるタイプです.(ex) value: string | number)

  • Type Aliasはタイプの名前を指定します.(タイプを変数として宣言するのと同様)
    (これはタイプスクリプトを使用するときによく使われる形式ですが、名前は分かりません.)😂)

  • インタフェース宣言は、オブジェクトタイプの名前を指定する別の方法と言える.
    // Type Alias
    type Point = {
      x: number;
      y: number;
    };
    
    // Interface
    interface Point {
      x: number;
      y: number;
    }

  • Type AliasesとInterfacesの違いは?

  • インタフェースはextends拡張タイプを使用できます.


  • interfaceは、次のように、存在するinterfaceに新しいフィールドを追加できます.

    でも機能はほぼ似ているので、好みで選べば使えます.

  • タイプサポートは、タイプスクリプトがタイプを特定できない場合に直接タイプを宣言するために使用されます.(ただし、タイプスクリプトコードはコンパイル時に消去されるため、実行時には役に立たない!)

  • Literal Typeはstringの文に従って、数字の特定の数で表示されるタイプです.
    (ex) align: "left"| "right"| "center", returnType: -1 | 0 | 1)
    (+booleanは最初はtrue|false unionタイプ)
  • as constはconstと似ていますが、タイプシステム内のオブジェクトのすべての属性が通常の文字列や数値タイプではなくテキストタイプであることを保証します.
  • const req = { url: "https://example.com", method: "GET" } as const;
  • null/undefined
  • strictNullChecks off:nullおよび定義されていない任意のタイプに
  • を割り当てることができます.
  • strictNullChecks on:nulが使用可能な場合は、使用前にnullをチェックする必要があります.
  • Non-null Assertion Operator(!) : nullまたはundefinedでないと判断した場合、x!.toString()でタイプエラーは発生しません.→ただし運転時とは関係ないので注意が必要
  • bigint : const oneHundred: bigint = BigInt(100) 또는 100n;
  • Symbol()関数を使用して、グローバル一意の参照を作成できます.
  • const firstName = Symbol("name");
    const secondName = Symbol("name");
     
    if (firstName === secondName) {
     // firstName 과 secondName은 고유한 타입을 갖는다.
     // Can't ever happen
    }