typescript 기본

suding·2025년 1월 21일
1

Study

목록 보기
10/10
post-thumbnail

☀️


number

let num1: number = 123;
let num2: number = -123;
let num3: number = 0.123;
let num4: number = -0.123;
let num5: number = Infinity;
let num6: number = -Infinity;
let num7: number = NaN;

console.log(num3.toFixed(3));

string

let str2: string = "hello";
let str3: string = `hello`;
let str4: string = `hello ${num1}`;

boolean

let bool1: boolean = true;
let bool2: boolean = false;

null

let null1: null = null;

undefined

let unde1: undefined = undefined;
// strictNullCheck 가 true면 아래 오류 , false면 오류 x
// let numA: number = null;

리터럴 타입

리터럴 -> 값
let numA: 10 = 10;
// numA = 12;

let strA: "hello" = "hello";
// strA = "df";

// let boolA : true = false;

☀️☀️


배열

let numArr: number[] = [1, 2, 3];

let strArr: string[] = ["hello", "im", "yehchic"];

let boolArr: Array<boolean> = [true, false, true];

배열에 들어가는 요소들의 타입이 다양할 경우

let multiArr1: Array<number | string> = [1, "hello"];

let multiArr2: (number | string)[] = [1, "hello"];

// console.log(multiArr1);

다차원 배열의 타입을 정의하는 방법

let doubleArr: number[][] = [
    [1, 2, 3],
    [4, 5],
];

튜플

길이와 타입이 고정된 배열

let tup1: [number, number] = [1, 2];
// tup1 = [1, 2, 3];
// tup1 = ["hello", "hi"];
let tup2: [number, string, true] = [1, "hello", true];

const users: [string, number][] = [
    ["이정환", 1],
    ["이아무개", 2],
    ["김아무개", 3],
    ["신아무개", 4],
    // [5, "최아무개"],
];

☀️☀️☀️


object

id 옆 '?'의 의미는 해당 프로퍼티가 있어도 없어도 된다 라는 뜻
---- (선택적 프로퍼티(optional properties)).

let user: {
    id?: number;
    name: string;
} = {
    id: 1,
    name: "신수정",
};

let dog: {
    name: string,
    color: string,
} = {
    name: "구름이",
    color: "white",
};

user.id;

user = {
    name: "홍길동",
}

readonly

프로퍼티의 값을 변경하지 못하도록 하는 키워드

let config: {
    readonly apiKey: string,
} = {
    apiKey: "MY API KEY"
}

// config.apiKey = "hacked"; (오류)

☀️☀️☀️☀️


타입 별칭

타입을 변수처럼 정의해서 사용할 수 있는 타입 별칭

type User = {
    id: number;
    name: string;
    nickname: string;
    birth: string;
    bio: string;
    location: string;
};

동일한 스코프에 중복된 이름으로 별칭을 선언하면 오류 발생!!(중복 주의)

만약 fucntion이 있고 함수 내 type User가 있으면 func 함수 안에서는 안에 있는 User가 타입이 되고, 함수 밖에서는 밖에 있는 User가 타입이 된다.

function func() {
    type User = {};
}

let user1: User = {
    id: 1,
    name: "신수정",
    nickname: "yehchic",
    birth: "1999.04.20",
    bio: "안녕하세요",
    location: "서울시",
};

let user2: User = {
    id: 2,
    name: "뤂둥이",
    nickname: "yehchic",
    birth: "1999.04.20",
    bio: "안녕하세요",
    location: "서울시",
};

인덱스 시그니처

key와 value의 타입을 기준으로 규칙을 이용해 객체의 타입을 정의하는 것

type CountryCodes = {
    [key : string] : string;
};

let countryCodes: CountryCodes = {
    Korea: 'ko',
    UnitedState : 'us',
    UnitedKingdom : 'uk',
};

반드시 작성할 프로퍼티가 있을 때는 아래의 Korea와 같이 직접 적어준다.

type CountryNumberCodes = {
    [key : string] : number;
    Korea: number;
};

let countryNumberCodes : CountryNumberCodes = {
    Korea: 410,
    UnitedState: 840,
    UnitedKingdom: 826,
};

‼️ 인덱스 시그니처 사용 시 주의사항
규칙을 위반하지만 않으면 모든 객체를 허용하는 타입이다.

let countryNumberCodes: CountryNumberCodes = {
    Korea: 410,
};

☀️☀️☀️☀️☀️


enum 타입

여러가지 값들에 각각 이름을 부여해 열거해두고 사용하는 타입

enum에 숫자를 직접 적지 않아도 자동으로 위에서부터 0, 1, 2 순으로 들어간다.

// 숫자형 enum
enum Role {
    ADMIN = 0,
    USER = 1,
    GUEST= 2,
}

// 문자형 enum
enum Language {
    korean = "ko",
    english = "en", 
}

const user1 = {
    name: "신수정",
    role: Role.ADMIN, // 0 <- 관리자
    language: Language.korean,
}

const user2 = {
    name: "이혜진",
    role: Role.USER, // 1 <- 일반 유저
}

const user3 = {
    name: "이슬아",
    role: Role.GUEST, // 2 <- 게스트
}

console.log(user1, user2, user3);

☀️☀️☀️☀️☀️☀️


any

특정 변수의 타입을 우리가 확실히 모를 때

let anyVar: any = 10;
// anyVar = "hello";

// anyVar = true;
// anyVar = {};
// anyVar = () => {};

// anyVar.toUpperCase();
// anyVar.toFixed();

let num : number = 10;
num = anyVar;

unknown

let unknownVar: unknown;
unknownVar = "";
unknownVar = 1;
unknownVar = () => {};

unknown과 any 타입의 차이

  • unknown은 모든 값을 저장할 수 있지만 반대로는 안된다.
  • num = anyVar; 는 가능하지만 num = unknownVar; 는 불가능

아래 코드일 경우에만 가능

if (typeof unknownVar === "number") {
    num = unknownVar;
}

☀️☀️☀️☀️☀️☀️☀️


void

  • void -> 공허 -> 아무것도 없다.
  • void -> 아무것도 없음을 의미하는 타입
function func1(): string {
    return "hello";
}

function func2(): void {
    console.log("hello");
}

let a: void;
// a = 1;
// a = "hello";
// a = {};
a = undefined;

never

never -> 존재하지 않는 불가능한 타입

function func3(): never {
    while (true) {

    }
}

function func4(): never {
    throw new Error();
}

// let a: never;
// a = 1;
// a = {};
// a = "";
// a = undefined;
// a = null;
// a = anyVar;
profile
SudingWord

0개의 댓글

관련 채용 정보