[TypeScript] 초기 설정 및 데이터 유형별 타입 지정 방법
타입스크립트 설치
npm install -g typescript
컴파일 할 때 옵션 설정: tsconfig.json 파일에 다음과 같이 설정
사용할 자바스크립트 버전 설정
module은 파일간 내보내기/가져오기 기능 사용할 때 무슨 문법을 사용할지 정하는 것이다.
commonJS: require 문법
es2015, esnex는 import 문법
{
"compilerOptions": {
"target": "ES6",
"module": "commonJS"
}
}
자동 컴파일 기능: 터미널에 tsc -w 입력
⚠️오류 발생시: 터미널 경로 확인
tsc -w
변수에 타입 지정가능
string 타입 이외의 타입이 입력될 시 오류 발생
입력 가능 타입 List
:string
:number
:boolean
:null
:undefined
:bigint
:[] => 배열
:{} => 객체
등등
배열 설정 방법
// string 타입의 배열만 가능
const username :string[] = ['Daniel', 'Chloe']
객체 설정 방법
// '?'는 이 프로퍼티가 있을수도, 없을수도 있다는 것을 표현한다.
// 즉, 없어도 오류를 발생시키지 않는다.
const username :{ name? : string } = { name: 'Daniel' }
객체의 프로퍼티가 많다면
// [key: string]은 모든 프로퍼티를 string 타입으로 지정, 그리고 값도 string 타입으로 지정
type Member = {
[key: string]: string
};
const username: Member = {
name: 'Daniel',
department: 'sdasvzxce'
};
함수 타입 지정 가능: 파라미터, 리턴값에 지정 가능
⚠️ 리턴값이 없게 해달라는 것은 :void (비어있는)를 지정하면 됨.
그리고 파라미터의 값이 있을 수도, 없을 수도 있다는 표시는 파라미터 뒤에 ? 를 표시해줘야한다.
아래 예시에서 ?는 (string | undefind)로 설정해 주는 것과 같다.
// 파라미터: string, 리턴값: string
function sayHello(x? : string) :string {
const text :string = `${x}님 어서오세요`;
return text;
};
Union type: 다양한 타입 설정
⚠️ 유니온 타입은 'string | number' 라는 새로운 타입을 만드는 것이라고 생각해도 좋다.
// string 혹은 number 타입의 값이 들어올 수 있다.
const username : string | number = 'Daniel'
any: 모든 타입 가능
⚠️ 이 타입이 다른 변수에 할당이 되면 그 변수의 타입에 맞춰줌
username은 string 이고, userId는 number 타입이어도, 오류가 발생하지 않음.
const username : any = 'Daniel'
// ⚠️의 예시
const userId : number = username; // 오류❌
unknown: 모든 타입 가능
⚠️ any와는 다르다. 위 예시에서 any 대신 unknown 타입을 사용하면 예시에서 오류를 발생시켜줌
Type alias: 타입이 길면 type변수에 따로 담아서 사용 가능
⚠️ 타입 alias의 변수 이름은 보통 대문자로 시작한다.
type 변수_이름 = string[] | number;
const username :변수_이름 = ['Daniel', 'Chloe'];
Tuple Type: array에 사용 가능
// 첫 번째 요소는 string, 두 번째 소요는 boolean
type Member = [string, boolean];
const username :Member = ['Daniel', true];
Class: Class에서 타입 지정하기
class User {
name: string;
constructor(name: string) {
this.name = name;
}
}
'BE > TypeScript' 카테고리의 다른 글
[TypeScript] type과 interface 차이점과 사용 팁 (0) | 2023.06.13 |
---|---|
[OnlyForMe] 기본 TS 프로젝트 설정하는 방법 (0) | 2023.06.12 |
[TypeScript] abstract(추상 클래스)에 대해 이해하기 (0) | 2023.06.11 |
[TypeScript] 함수와 메소드에 type alias를 붙이는 방법 (0) | 2023.06.06 |
[TypeScript] Literal Type과 as const이해하기 (0) | 2023.06.05 |