今回は関数のパラメータに型定義する方法をについてざっくり学んでいきます!
間違い等あればご指摘して頂ければと思います!
オプションパラメータについて
オプションパラメータは「?」をつけることでパラメータを使っても使わなくていいと宣言?することができます!
ただし、オプションパラメータは最後に宣言する必要があります!
実際にコードを書いてみます
export const isUserSignedIn = (userId:number,name?:string):boolean => {
if(userId === 1){
console.log(name)
return true
}else{
console.log('noName')
return false
}
}
isUserSignedIn(1,'takeda');
とすることでconsoleはtakedaを表示します!
isUserSignedIn(2);
とするとelseが走るので、noNameが表示されます!
isUserSignedIn(2)はnameを引数に指定してませんがオプションパラメータがあることで指定しなくてもOKです!
デフォルトパラメータについて
引数がなかった場合は初めに指定した値が代入される
export const isUserSignedIn2 = (userId:number,name="suzuki"):boolean => {
if(userId === 1){
console.log(name)
return true
}else{
console.log(name)
return false
}
}
isUserSignedIn2(1)
をパラメータに渡すとnameの指定がないのでsuzukiが表示される。
isUserSignedIn2(1,'yamada')
を引数に指定するとyamadaが表示される
これがデフォルトパラメータです!
レストパラメータについて
不特定多数の引数を受け取りたい時に使用します!
export const value = (...num:number[]) => {
console.log(num)
}
...と記載することで不特定多数のnumber型を配列に格納してくれます!
value(1,2,3,4,5)
で呼び出すことでconsoleは[1, 2, 3, 4, 5]と表示されます!
呼び出しシグネチャ
今まではパラメータに型定義してましたが、関数に型定義する方法です!
書き方が2種類あるので紹介していきます!
正式な記法
type messageSignenecher = {
(message :string):void
}
export const logMeesage :messageSignenecher = (message) => {
console.log(message);
}
オブジェクトに似た形式で記載することができます!
voidはreturnを返さない時に記載する特別な指定方法です!
省略記法
type messageSignenecher = (message:string) => void
export const logMeesage :messageSignenecher = (message) => {
console.log(message);
}
アロー関数に似た形式で記述することができます!
最後に
指定の方法がたくさんあって迷うなー。
とりあえずわからなくなったら都度調べればいいか・・・