반응형
함수
매개변수에 변수 타입 선언
function sing(song: string) {
console.log(`Singing: ${song}!`);
}
sing('hhh');
자바스크립트의 경우 2개의 매개변수에 값을 한 개만 넣을 경우 undefined로 출력하지만 타입스크립트에서는 에러를 표기한다.
function SingTwo(first: string, second: string) {
console.log(`first: ${first} / ${second}`);
}
SingTwo('h111', 'h222');
SingTwo('h111'); //error
만약 선택적 매개변수를 이용하려면 변수명 뒤에 ?를 추가하면 매개변수를 1개만 넣어도 된다.
function SingTwo(first: string, second?: string) {
console.log(`first: ${first} / ${second}`);
}
SingTwo('h111', 'h222');
SingTwo('h111');
//"first: h111 / undefined"
second에 = 를이용하여 매개변수 값을 초기화 해줄 수 있다.
function SingTwo(first: string, second = '') {
console.log(`first: ${first} / ${second}`);
}
SingTwo('h111', 'h222');
SingTwo('h111');
… 연산자를 이용하여 임이의 수의 인수로 호출할 수 있다.
function SingTwo(first: string, ...second: string[]) {
for (const s of second) {
console.log(`first: ${first} / ${s}`);
}
}
SingTwo('h111', 'h222');
SingTwo('h111', 'hwe',',wer','eew','aq');
명시적 반환타입
function singSongRecursive(songs: string[], count = 0) : number {
return songs.length ? singSongRecursive(songs.slice(1), count +1) : count;
}
console.log(singSongRecursive(["s","h"], 1));
//애로우키워드를 이용한 함수 호출
const singSongRecursive1 = (songs: string[], count = 0): number => {
return songs.length ? singSongRecursive(songs.slice(1), count +1) : count;
}
console.log(singSongRecursive1(["s","h"], 1));
함수타입
const songs = ["Juice","Shake It Off", "What's Up"];
function runOnSong(gsetSongAt: (index: number) => string) {
for (let i = 0 ; i < songs.length; i+= 1) {
console.log(gsetSongAt(i));
}
}
function getSongAt(index: number) {
return `${songs[index]}`;
}
runOnSong(getSongAt);
배열
배열타입
//배열 타입
let arr: number[];
arr = [1,2,3,4,5];
배열과 함수 타입
//string 배열 반환 함수
let strArr: () => string[];
//각각의 string을 반환하는 함수배열
let string: (() => string)[];
유니언 타입 배열
//string 또는 number의 배열
let stringOrArrayOfNumbers: string | number[];
//각각 number 또는 string인 요소의 배열
let arrayOfStringOrNumbers: (string | number)[];
//type: (string | undefined)[]
const namesMaybe = ["Aqualtune", "Blenda", undefined];
튜플
고정된 크기의 배열로 각 인덱스에 알려진 특정 타입을 가지며 유니언 타입보다 더 구체적이다.
//튜플타입
let yearAndWarrior: [string, number];
yearAndWarrior = ["Tomyris", 530];
튜플과 구조분해할당선언
let [year, warrior] = Math.random() > 0.5 ? [100, "Hongil"] : [50, "hong"];
반응형
'Language > TypeScript' 카테고리의 다른 글
[TypeScript] 인터페이스 (0) | 2023.08.07 |
---|---|
[TypeScript] 타입시스템, 유니언과 리터럴 (0) | 2023.08.07 |