
코딩애플 강의를 통해 배운 TypeScript를 정리한 글입니다.
2025년 2월 14일
Part 1 : 꼭 알아야할 내용
//powershell
npm install -g typescript
//tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "commonjs"
}
}
//powershell
tsc -w
let 문자열: string = "string";
//tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "commonjs"
}
}
tsc -w
//ex)
let 이름: string = "kim";
let 나이: number = 50;
let 결혼했니: boolean = true;
let 회원들: string[] = ["kim", "part"];
let 회원들2: { member1: string } = { member1: "kim" };
//ex)
let 회원: string | number = "kim";
let 회원들: (number | string)[] = [1, "2", 3];
let 오브젝트: { a: string | number } = { a: 123 };
let 이름: any = 123;
let 이름2: unknown = "a";
//ex)
function 함수(x?: number): number {
return x * 2;
}
함수(30);
==
function 함수2(x: number | undefined): number {
return x * 2;
}
함수2(30);
typeof를 통해 타입을 확인한다if (typeof x === 'string')
function 내함수(x: number | string) {
let array: number[] = [];
array[0] = x as number;
}
type Animal = string | number | undefined;
let 동물: Animal = 123;
type Animal2 = { name: string, age: number };
let 동물2: Animal2 = { name: "kim", age: 20 };
const 변수는 등호로 재 할당을 막는다object수정은 자유롭다readonly 사용 시 수정이 안됨type Animal ={
readonly name : string
}
type변수는 &를통해 extend할 수 있다type a = string;
type b = string;
type c = a & b;
let 이름: "park";
이름 = "nam"; //에러
let 자료 = { name: "kim" };
function 함수(a: "kim") {}
함수(자료.name); //에러남
type 함수타입 = (a: string) => number;
let 함수: 함수타입 = function (a) {
return 10;
};
// 방법1 narrowing
let 제목 = document.querySelector("#title");
if (제목 != null) {
제목.innerHTML = "반갑소";
}
// 방법2 instanceof
let 제목 = document.querySelector("#title");
if (제목 instanceof Element) {
제목.innerHTML = "반갑소";
}
// 방법3 assertion
let 제목 = document.querySelector("#title") as Element;
제목.innerHTML = "반갑소";
// 방법4 optional chaining
let 제목 = document.querySelector("#title");
if (제목?.innerHTML != undefined) {
제목.innerHTML = "반갑소";
}
// 방법5 strict 설정 false
"strictNullChecks": false
let 링크 = document.querySelector("#link");
if (링크 instanceof HTMLAnchorElement) {
링크.href = "https://kakao.com";
}
interface Student {
name: string;
}
interface Student {
name: score;
}
interface Teacher extends Student {
age: number;
}
let 학생: Student = { name: "kim" };
let 선생: Teacher = { name: "kim", age: 20 };