function sing(song: string) {
console.log(`Singing: ${song}`);
}
📍 필수 매개변수
- 자바스크립트: 인수의 수와 상관없이 함수를 호출할 수 있음
- 타입스크립트: 함수에 선언된 모든 매개변수가 필수라고 가정함
function singTwo(first: string, second: string) {
console.log(`${first} / ${second}`);
}
// ❌ error
singTwo("Ball and Chain");
// ✅ Ok
singTwo("I Will Survive", "Higher Love");
// ❌ error
singTwo("Go Your Own Way", "The Chain", "Dreams");
📍 선택적 매개변수
function announceSong(song: string, singer?: string) {
console.log(`Song: ${song}`);
if (singer) {
console.log(`Singer: ${singer}`);
}
}
announceSong("Greensleeves"); // ✅ Ok
announceSong("Greensleeves", undefined); // ✅ Ok
announceSong("Greensleeves", "Sia"); // ✅ Ok
function announceSongBy(song: string, singer: string | undefined) {
console.log(`Song: ${song}`);
if (singer) {
console.log(`Singer: ${singer}`);
}
}
announceSongBy("Greensleeves"); // ❌ Error
announceSongBy("Greensleeves", undefined); // ✅ Ok
announceSongBy("Greensleeves", "Sia"); // ✅ Ok
- 함수에서 사용되는 모든 선택적 매개변수는 마지막 매개변수여야 함.
- 필수 매개변수 전에 선택적 매개변수를 위치시키면 오류 발생.
function announceSinger(singer?: string, song: string) {} // ❌ Error
📍 기본 매개변수
- 선택적 매개변수를 선언할 때
=
와 같이 포함된 기본값을 제공할 수 있음
function rateSong(song: string, rating = 0) {
console.log(`${song} gets ${rating}/5 stars!`);
}
rateSong("Photograph"); // ✅ Ok
rateSong("Set Fire to the Rain", 5); // ✅ Ok
rateSong("Set Fire to the Rain", undefined); // ✅ Ok
rateSong("At Last!", "100"); // ❌ Error
📍 나머지 매개변수
- 타입스크립트도 나머지 매개변수의 타입을 선언할 수 있음
- 인수 배열을 나타내기 위해 끝에
[]
구문이 추가됨
function singAllTheSongs(singer: string, ...songs: string[]) {
for (const song of songs) {
console.log(`${song}, by ${singer}`);
}
}
singAllTheSongs("Alicia Keys"); // ✅ Ok
singAllTheSongs("Lady Gaga", "Bad Romance", "Just Dance", "Poker Face"); // ✅ Ok
singAllTheSongs("Ella Fitzgerald", 2000); // ❌ Error