JSからTS—3(関数)へ


TSが関数をどのように定義するかを見てみましょう.
さっそく始めましょう.

どう書きますか。


タイプスクリプトは、すべてのデータのタイプを決定する必要があります.通常の変数に加えて、パラメータとオブジェクトのデートも別々に入れます.
もちろん、関数にも適用する必要があります.関数には通常どのようなデータがありますか?C、C++を考慮すると、パラメータだけでなく、戻りタイプも決定する必要があります.下のヘルメットのようです.👇
function add (x : type , y : type) : type 
{...}
ここで、戻りタイプをパラメータの後ろに貼り付けます.
以前の例を完全に返すように記録すると、
//void 반환
function add(num1: number, num2 : number ) : void {
	console.log(num1+num2)
}

//bool 반환
function is(age:number ) : boolean {
	return age > 19
}
また、関数のパラメータもインタフェースのように簡単に指定できます!
function hello (name:string ) : string {
	return `Hello, ${name || "world "} `
} // 에러 : 무조건 name 이 들어와야 한다고 생각하기 떄문.

function hello (name?:string ) : string{
	return `Hello, ${name || "world "} `
} // 성공
🙋 JSでもデフォルトは使えますか?
🤖 安くできます.
function hello (name = "world" ): string {
	return `Hello, ${name} `
} // 성공
⚠▼オプションパラメータを使用する場合は、ご注意ください!
function hello (name?:string , age : number ) : string{
	return `Hello, ${name} . you are ${age}`
} // error

function hello (name:string , age ?: number ) : string{
	return `Hello, ${name} . you are ${age}`
} // ok
オプションのパラメータが必要なパラメータの前にエラーが発生した場合!
🙋 あ、でもname度の前に置いて、選択的なパラメータにしたいのですが、よろしいでしょうか.
🤖 安くできます.

function hello (name:string | undefiend , age : number ) : string{
	return `Hello, ${name} . you are ${age}`
} // ok

hello(undefined , 30)

パラメータタイプ

  • Restパラメータ(=アレイタイプ)
  • function add(...nums : number[]) {
    	return nums.reduce(() .....)
    }
    
    add(1,2,3,4)
    add(1,2,3,4,5,5,2,1,3)
    
  • thisタイプ定義
  • 
    interface User {
    	name : string;
    }
    
    // 매개변수 없는 경우
    function showName(this:User) {
     console.log(this.name) 
     
    }
    
    
    const Sam : User = {name : 'woong'}
    
    const a = showName.bind(Sam); // this 를 Sam 객체로 강제함.
    a()
    
    🙋 パラメータを受け取った場合、this typeをどのように決定しますか?
    🤖 いちばん前に書く
    
    interface User {
    	name : string;
    }
    
    // 매개변수 있는 경우
    function showName(this:User , a: number , gender : 'm'|'f') {
    //전달된 매개 변수는 2번째 부터 적용.
     console.log(this.name) 
     
    }
    
    
    const Sam : User = {name : 'woong'}
    
    const a = showName.bind(Sam); // this 를 Sam 객체로 강제함.
    a(30,'m')
    
  • 関数戻りタイプ(異なる場合)
  • interface User {
    	name : string;
        age : number;
    }
    
    function joid (name :strinf , age : number | string ) : User | string {
    	if (typeof age == "number"){
        	return {name,age}
        }
        else{
        	return "숫자로 입력하셈"
        }
    }
    
    
    const sam : User = join ("Sam" ,30 ) // error
    const sam2 : string = join ("Sam" ,"30" ) // error
    
    
    この場合、samおよびsam2は、それぞれの戻りタイプが不確定であるため、エラーである.
    この場合、関数リロードを使用して解決できます.
    私たちは間違いを心配するお客様に書類を作成します.😊
    ....
    function joid (name :strinf , age : number ) : User;
    function joid (name :strinf , age : string ) : string;
    function joid (name :strinf , age : number | string ) : User | string {
    	if (typeof age == "number"){
        	return {name,age}
        }
        else{
        	return "숫자로 입력하셈"
        }
    }
    const sam : User = join ("Sam" ,30 ) // ok
    const sam2 : string = join ("Sam" ,"30" ) // ok
    パラメータのタイプまたは数に応じて異なるエコーを行う必要がある場合は、オーバーロードを使用してエコーを行うことができます.