#[TIL] # 47 typescript
13583 ワード
module
internal, external
タイプスクリプトでは、モジュールは大きく2つに分類されます.
内部モジュール
がいぶモジュール
2つのモジュールの最大の違いは、その依存性にあります.
Internal Module
他のモジュールローダに依存する必要はありません.
Typeスクリプトをコンパイルすると、名前付きJavascriptオブジェクトが作成されます.
モジュール化
ネーミングスペースの生成
External Module
Common.js/Require.js/ES 6モジュールなどのモジュールLoaderに依存
nodeの場合、namespaceではなくmoduleを使用することをお勧めします.
declare
typescriptをコンパイラに特定の変数があると宣言します.
主にグローバル変数です.d.tsファイルの作成に使用
モジュール名が「」の場合、外部モジュールの定義です.
Type, Interface
どちらの方法も宣言の方法です.
違いは宣言を統合できるかどうかだ.
interface phoneNumber {
inputString?: string;
}
interface phoneNumber {
inputNumber?: number;
}
type phone {
numb: number;
}
// Error
type phone {
str: number;
}
インタフェースの場合、宣言をマージできます.typeは宣言をマージできません
Union Type
けつごう
「|」記号でUnionタイプを表す
感覚はorとあまり違わない
ユーザーが自由に携帯電話番号を受信できれば
function phoneNumberInput(phoneNumber: string | number) {
if ( typeof(phoneNumber) === "string"){
console.log("stringType")
} else {
console.log("numberType")
}}
これによりUnion Typeを用いてパラメータのタイプを決定することができる共通フィールドを持つUnion Type
上記のようにUnionタイプをパラメータのタイプに適用すると、
インターフェースを使用してオブジェクトのタイプを指定しても使用できます
interface Bird {
fly(): void;
layEggs(): void;
}
interface Fish {
swim(): void;
layEggs(): void;
}
declare function getSmallPet(): Fish | Bird;
let pet = getSmallPet();
pet.layEggs();
// Error
pet.swim()
このUnionタイプを使用してタイプを定義できます.Unionタイプをインタフェースに適用した場合は不明です.
共通のlayeggs()タイプのみ使用できます
ユニオンタイプの区分
type NetworkLoadingState = {
state: "loading";
};
type NetworkFailedState = {
state: "failed";
code: number;
};
type NetworkSuccessState = {
state: "success";
response: {
title: string;
duration: number;
summary: string;
};
};
type NetworkState =
| NetworkLoadingState
| NetworkFailedState
| NetworkSuccessState;
function networkStatus(state: NetworkState): string {
// Error
state.code;
// switch 문으로 구분해서 사용 가능
switch (state.state) {
case "loading":
return "Downloading...";
case "failed":
return `Error ${state.code} downloading`;
case "success":
return `Downloaded ${state.response.title} - ${state.response.summary}`;
}
}
typeを指定し、stateに同時に値を割り当てます.スイッチドアで仕切って使用できます
enum
列挙
enum Direction {
up,
down,
left,
right
}
Direction.up // 0
Direction.down // 1
Direction.left // 2
Direction.right // 3
Direction["0"] // "up"
Direction["1"] // "down"
Direction["2"] // "left"
Direction["3"] // "right
Generic
ジュネーブを使う最大の原因は、様々な状況に対処するためらしい.
いろいろな状況に対処するのは、どんなタイプがあるか分からない状況です.
不確定な場合に使用し、この場合にgenericを使用します.
単純な解決
ジェニーンリックを生成するときは、タイプを指定して、いろいろなタイプを使用させます.
最も多く使用されるタイプ変数Tはtypeの略であるため、
Tを使用して、関数の作成時にタイプを作成します.
パラメータ「string」が受信された場合、Tというタイプ変数に格納されます.
使用
タイプを、何も返さないvoidとして指定します.
ご覧のように、Tにvoidが含まれていることを確認できます.
生成者?この言葉は少しぴったりしているようだ.
Reference
この問題について(#[TIL] # 47 typescript), 我々は、より多くの情報をここで見つけました https://velog.io/@ddalkigum/TIL-47-typescriptテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol