티스토리 뷰
챌린지 1일차 !
먼저, 명시적 타입 선언 방법들에 대해 알아보겠습니다.
TS 변수 선언 방식
1. 명시적 변수 선언
const (ValueName) : (Type) = (Value)
2. 암묵적 변수 선언
const (ValueName) = (Value)
명시적 타입 선언 방법
타입 시스템
자바스크립트는 변수를 생성 하기만 하면 되고 그 변수가 어떤 타입인지 지정해주지 않아도 됨.
하지만 자바나 C#, 타입스크립트는 모든 것의 타입을 지정해줘야한다.
let a = "hello"
a = "bye" // a가 string이라는 것을 알고 있음.
a = 1 //error
👉 자바스크립트는 가능
let a = "hello"
let b : boolean = "x" //error
let b : boolean = false
👉 타입스크립트 문법
let a : number[] = [1,2];
let b : string[] = ["i1", "1"];
let c : boolean[] = [true];
👉 배열 타입 선언
타입 오브젝트와 옵셔널(Optional)
let a : number[] = [1,2];
let b : string[] = ["i1", "1"];
let c : boolean[] = [true];
옵셔널(Optional)은 있을수도, 없을 수도 있는 변수를 저장하기 위해 있다.
⚡?를 :앞에 있는 변수에 붙이면 Optional을 사용할 수 있다.
const player = { name : "jung" } //age는 없지만 name은 항상 갖고 있는 player객체
player.name // 가능
const player = { name : string, age : number } = { name:"jung" }
//age is missing
const player = { name : string, age? : number } = { name:"jung" }
//age? : number | undefined; 옵셔널(Optional)선언
if(player.age < 10 ){}
//❌ error! why? age가 숫자일 수 있지만, 숫자가 아닐 수 도 있기 때문!
if(player.age && player.age < 10 ){ }
//⭕ undefined일 가능성 체크
👉 TS에서 값이 없는 변수는 Undefined를 리턴한다. 따라서, 옵셔널을 사용하여 IF문을 사용할 경우 추가적인 선언이 필요하다.
1) Alias(별칭)으로 타입을 지정하는 방법
TS에서는 number,string,boolean 등 간단한 타입을 넘어 Alias(별칭)으로 타입을 지정해 줄 수 있다.
⚡타입 별칭 이름은 대문자로 시작한다.
const playerJun = {
name : string,
age? : number
} = {
name:"jun"
}
// ---> 이 경우에는 별칭타입을 생성할 수 있음
const playerStar = {
name : string,
age? : number
} = {
name:"star" ,
age: 12
}
type Player = {
name : string,
age? : number
}
const jun : Player = {
name:"jun"
}
const star : Player = {
name:"star" ,
age: 12
}
👉 Player라는 별칭으로 타입 객체를 만들고, const 변수 jun과 start의 타입을 지정할 수 있다.
별칭 타입안에 선택적 타입을 가진 것을 만드는 방법
➕ age의 타입에 대한 다른 별칭을 만들 수도 있다. (가능하다는 거지 굳이 안그래도 되긴 함)
type Age = number;
type Name = string;
type Player = {
name : Name,
age? : Age
}
물론, 이런식으로 과하게 재사용 하는 것은 좋지 않음~~! 코드가 깔끔 해질 때 까지만 이 작업을 하면 된다.
2) 함수의 retrun값의 타입을 지정하는 방법
TS에서는 함수의 리턴타입을 지정해줄 수 있다.
player의 object를 만들고 그 결과로 player를 반환한다.
type Age = number;
type Name = string;
type Player = { // 반복해서 작성하지 않고 재사용 가능
name : Name,
age? : Age
}
function playerMaker(name:string){
return {
name
}
}
const jun = playerMaker("jun") //string
jun.age = 12 // ❌ error
TS에게 playerMaker를 Player타입을 반환하고 있다고 말하고 싶다면?
현재 playerMaker는 string인 name이라는 요소만 있는 객체를 반환하고 있다.
function playerMaker(name:string) : Player{
return {
name
}
}
const jun = playerMaker("jun")
jun.age = 12 // ⭕
Ts가 playerMaker를 string타입으로 name을 받고 Player타입을 반환하는 함수로 이해하게 된다.
👉 인수(argument)인 **name의 타입(string)**과 **함수의 리턴 타입(Player)**을 지정할 수 있음
위 내용을 보면 거의 모든 것에 타입을 추가할 수 있고 별칭을 줄 수 있다는 것을 알 수 있다.
그렇다면 화살표 함수를 사용했을 때는 어떻게 사용할까?
type Age = number;
type Name = string;
type Player = { // 반복해서 작성하지 않고 재사용 가능
name : Name,
age? : Age
}
function jsArrowFunc = (name:string) => ({name}) //화살표 함수
const jun = playerMaker("jun")
jun.age = 12 // ❌ error
위 코드의 화살표 함수는 name이라는 object를 반환한다. jun.age를 작성하면 오류가 난다.
function playerMaker = (name:string) : Player => ({name}) //화살표 함수
const jun = tsArrowFunc("jun")
jun.age = 12 // ⭕
위에서 처럼 같은 문법(:타입) 함수 리턴 타입을 작성해 주면 된다.
const jsArrowFunc = ( parameter ) => {} //JS
const tsArrowFunc = ( parameter : string ) : Player => ( { } ) //TS
/*
화살표 함수에서 return 값을 객체로 반환할 경우에
(parameter) => {}
이렇게만 쓰면 {} 부분이 함수 본문인지 객체인지 구분이 안되기 때문에
({}) 이렇게 묶어줘서 return값이 객체임을 확실히 하는 듯 하다.
*/
function playerMaker (parameter) {
}
(parameter) => {}
function playerMaker(parameter){
return {객체}
}
(parameter) => ({객체})
Types of TS(기본) 요약
✅ 배열: 자료형[ ] ✅ 숫자: number ✅ 문자열: string ✅ 논리: boolean
✅ 옵셔널: optional ✅ Alias(별칭) 타입
'TypeScript' 카테고리의 다른 글
[TS] Overloading(오버로딩)이 발생하는 경우 (0) | 2024.09.25 |
---|---|
[TS]Call Signatures 콜 시그니처란? (0) | 2024.09.25 |
[TS] readonly, Tuple, any와 unknown, void, never 속성 정리 (0) | 2024.09.24 |
[TS] 타입스크립트란? (0) | 2024.09.23 |
[챌린지] 타입스크립트 챌린지 준비 (0) | 2024.09.20 |
- Total
- Today
- Yesterday
- 오블완
- ts
- await
- create react app
- slice
- Async
- 카카오로그인
- 노마드
- splice
- 오버로딩
- props
- useEffect
- CLI
- 자바스크립트
- 프로그래머스
- 티스토리챌린지
- 타입스크립트
- 챌린지1일차
- nomard
- 재귀함수
- React
- TypeScript
- NPM
- 프로젝트회고록
- 리액트
- 리액트네이티브
- ReactJS
- Cleanup
- overloading
- useState
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |