거꾸로 바라본 세상
반응형

함수

매개변수에 변수 타입 선언

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
profile

거꾸로 바라본 세상

@란지에。

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!