[Typescript]関数とメソッド


タイプスクリプトは、オブジェクト向けプログラミングと関数式プログラミングをサポートします.
私がタイプスクリプトを学ぶのは、ノード環境でバックエンドを開発するためです.したがって,関数式プログラミングは主な内容の総括に欠けている可能性がある.
後で反応を学ぶかもしれないので、概念の程度を勉強して整理します.
関数とメソッド
JavaScriptの関数宣言メソッドとどのように異なるか、クラスのメソッドがどのように宣言されるかを理解します.
宣言関数
タイプスクリプトをJavaScriptと互換化するために、関数宣言も既存のJavaScriptで動作します.
タイプスクリプトは、functionキーワードとES 6(ESNext)がサポートする矢印関数を使用して関数を宣言することもできます.
関数と矢印関数
次は、タイプスクリプトの関数宣言方法です.
/* function 키워드를 사용하는 방법 */
function 함수명(매개변수: 타입): 반환타입 {
    // 함수 작동 코드...  
}
/* 화살표 함수를 사용하는 방법 */
const 함수명 = (매개변수: 타입): 반환타입 => {
    // 함수 작동 코드...
}
次に例を示します.
/* function 키워드를 사용하는 방법 */
function sayHello(name: string, age?: number): void {
    console.log(`${name}, Hello?`);
}

/* 화살표 함수를 사용하는 방법 */
const sayHello = (name: string, age?: number): void => {
    console.log(`${name}, Hello?`);
}
を選択します.これにより、必須および選択を定義できます.
関数の初期値と別名
タイプスクリプトの関数は、変数と同じタイプです.このタイプを関数フラグと呼びます.
const sayHello: (name: string, age: number) => void = function(name: string, age: number): void {}
上(name:string,age:number)=>voidはこの部分に対応します.
以上のコードはtypeキーワードで別名として使用できます.
type sayHello = (name: string, age: number) => void


const hello: sayHello = (a, b) => {
    console.log(`이름: ${a}, 나이: ${b}`)
}
しかし,関数signatureの利点はまだ理解されていない.
次の関数は、関数のパラメータを使用するのではなく、同じ論理を実行する関数です.
function basicHello(name: string, age: number): void {
    console.log(`이름: ${name}, 나이: ${age}`)
}
sayHelloタイプの関数が多く使われていれば、関数の利点になると思いますが、このような状況が存在するかどうかは疑問です.
関数式
JavaScriptには、オブジェクト向け言語と関数型の特徴があります.したがって、タイプスクリプトには2つの特徴があります.
タイプスクリプトの関数型フィーチャーは、関数式で理解できます.
JavaScriptでは、関数はFunctionクラスのインスタンスです.つまり、次のコードのように使用できます.
const add = new Function('a', 'b', 'return a + b');
console.log(add(1, 2));
// 출력 -> 3
既存の関数宣言とは非常に異なります.
別の方法で宣言することができます.
const add = function(a, b) {
    return a + b;
}
以上のようにfunction(a,b){return a+b}というコードを関数式と呼ぶ.
またconstによりaddに関数が加わることがわかり,これは変数と関数を区別せず,一等関数と呼ぶことを意味する.
いっとうかんすう
一等関数はプログラミング言語で提供される機能である.この機能は、関数を変数に含めて値と見なすことができます.したがって,パラメータとして関数を受信し,これをコールバック関数と呼ぶことができる.
次に、関数をパラメータとする関数が匿名関数を受信して実行される例を示します.
function sayFunction(sayHello: () => void): void {
    sayHello()
}

sayFunction(() => { console.log('Hello')});
// 출력 -> Hello
このように、関数をパラメータとして渡すことができます.
重ね合わせ関数
関数型言語では、関数は変数の関数式です.したがって、関数の内部で別の関数を宣言および呼び出すことができます.
const sayUser = (name: string, age: number, say: (name: string) => void):void => {
    const makeString = (name: string, age: number) =>  `이름: ${name}, 나이: ${age}`;
    say(makeString(name, age));
}
sayUser('solchan', 24, (result): void => console.log(result));
sayUser関数は名前、年齢、出力関数を受信し、makeString関数を呼び出して文字列を生成し、パラメータsay関数を呼び出して文字列を出力します.
クラス内のメソッドの宣言
このキーワードは、他のオブジェクト向け言語と同様にインスタンスで使用できます.ただし、矢印関数で作成した関数では使用できません.
class User {
    constructor(public name: string){};
    sayHello(): void {
        console.log(`${this.name}, Hello?`);
    }
}

const user = new User('solchan');
user.sayHello();
// 출력 -> solchan, Hello?
次に、静的キーによって静的メソッドを生成できます.
class SayHello {
    static say(): string {
        return 'Hello!';
    }
}
console.log(SayHello.say());
// 출력 -> Hello!
メソッドフィルタ
メソッドフィルタとは、オブジェクトのメソッドを接続して呼び出す方法です.
このため、メソッドはthisを返さなければなりません.
class Calc {
    constructor(public a: number, public b: number){};
    add() {
        this.a += this.b;
        return this;
    }
    mul() {
        this.a *= this.a;
        return this;
    }
    sayResult(): void {
        console.log(this.a);
    }
}

const calc = new Calc(1, 2);

calc.add().mul().sayResult();
/**
 * 1 + 2 = 3
 * 3 * 3 = 9
 * result  9
 */
この投稿はTypescriptを学び、使い方や文法を簡単に紹介する文章です.
私は'Do it! タイプスクリプトプログラミング冊の本を参考に勉強しています.
エラーメッセージがあれば、すぐに訂正します.
いつでもフィードバックを歓迎します!