한 입 크기로 잘라먹는 타입스크립트 - 인터페이스
section5 폴더를 생성한 뒤, section4 폴더에서 사용했던 package-lock.json, package.json, tsconfig.json 파일을 복사하여 section5 폴더에 붙여넣는다.
이후 package.json 파일에서 'name' 부분 값을 'section5' 로 수정한다.
- package.json
{
"name": "section5",
...
}
이후 터미널에서 'npm i' 명령어를 입력하여 package.json 의 'dependencies' 에 명시된 외부 패키지들을 일괄적으로 설치한다.
- Terminal
npm i
added 2 packages, and audited 3 packages in 604ms
found 0 vulnerabilities
이렇게 새로운 타입스크립트 프로젝트 세팅이 완료되었다.
이후 src 폴더를 생성하여 index.ts 파일을 만들어 제대로 동작하는지 테스트한다.
tsc 명령어를 이용하여 컴파일 후 컴파일된 자바스크립트 파일을 확인한다.
- Terminal
tsc
- dist/index.js
console.log('Hello TS');
export {};
컴파일 결과를 node 로 실행하고 tsx 로 실행한다.
- Terminal
node dist/index.js
Hello TS
tsx src/index.ts
Hello TS
타입스크립트 패키지 초기설정을 완료했다.
src 폴더에 chapter0.ts 를 생성한다.
만약 tsconfig.json 에서 빨간불이 들어온다면, Ctrl + S 를 눌러 저장한다.
1. 인터페이스
타입에 이름을 지어주는 또 다른 문법.
+ 객체의 구조를 정의하는데 특화된 문법(상속, 합침 등의 특수한 기능을 제공함)
인터페이스 : 우리말로 상호간에 약속된 규칙.
- chapter0.ts
/**
* 인터페이스
*/
interface Person {
name: string;
age: number;
}
const person: Person = {
name: '송진성'
, age: 31
};
타입 별칭과 타입을 정의하는 문법들만 좀 다를뿐 기본적인 기능은 같다.
- chapter0.ts
/**
* 인터페이스
*/
interface Person {
readonly name: string; // 읽기전용 프로퍼티 설정 가능
age?: number; // 선택적 프로퍼티 설정 가능
// sayHi: () => void; // 메서드 타입 정의 가능
// sayHi: (a: number, b: number) => void;
sayHi(): void; // 호출 시그니처 이용 가능
sayHi(a: number, b: number): void; // 오버로드 시그니처 (호출 시그니처 사용 권장)
}
// 타입 별칭
/*
type Func = {
(): void; // 호출 시그니처
};
const func: Func = () => {};
*/
const person: Person = {
name: '송진성'
, sayHi: function () {
console.log('Hi');
}
};
// person.name = '홍길동'; // 오류
person.sayHi();
person.sayHi(1, 2);
/**
* 인터페이스와 타입 별칭과의 차이점
* 타입 별칭은 유니온 타입, 인터섹션 타입 만들 수 있지만, 인터페이스는 불가능
*/
type Type1 = number | string; // 유니온 타입
type Type2 = number & string; // 인터섹션 타입
interface Test {
test: string;
} // | number / & number 불가능
// 인터페이스와 유니온/인터섹션 타입 활용하려면...
// 타입 별칭에 인터페이스를 넣어 활용 가능
type Type3 = number | string | Test; // 유니온 타입
type Type4 = number & string & Test; // 인터섹션 타입
// 인터페이스 타입 주석에 사용 가능
const test1: Test | number = {
test: '123'
};
/**
* 인터페이스 선언시 변수명
* 인터페이스 변수 선언시 I를 변수 앞에 붙이는 관습이 있다.
* 하지만 논란이 있는데, 대문자 I를 변수 앞에 붙이는 표기법을 헝가리안 표기법이라고 한다.
* 이런 표기법을 자바스크립트 프로그래밍에선 잘 안 쓴다.
* 주로 스네이크 표기법(user_name), 카멜 표기법(userName), 파스칼 표기법(UserName)을 쓴다.
* 팀의 환경에 따라 I를 변수 앞에 붙일지 안 붙일지 따라가면 된다.
*/
interface IPerson {}
한 입 크기로 잘라먹는 타입스크립트(TypeScript) 강의 | 이정환 Winterlood - 인프런
이정환 Winterlood | 문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻♀️로 만들어드립니다., 프론
www.inflearn.com
'강의 실습 > 한 입 크기로 잘라먹는 타입스크립트(TypeScript)' 카테고리의 다른 글
인터페이스 합치기 (1) | 2024.11.13 |
---|---|
인터페이스 확장하기 (2) | 2024.11.12 |
사용자 정의 타입 가드 (0) | 2024.11.04 |
함수 오버로딩 (0) | 2024.11.03 |
함수 타입의 호환성 (0) | 2024.11.02 |
댓글