개요
Java Script : 동적 타이핑 = 변수의 타입 지정없이 값이 자동으로 설정 됨
->타입 안정성 없음
[1,2,3,4] + false //'1,2,3,4false' 가됨
Java Script에 타입 안정성을 부여하기 위해 만들어진것이 Type Script
Type Script는 작성된 코드의 타입 안정성을 체크한 뒤 Java Script로 컴파일 함.
let a = 'hello' //string으로 추론
a = 2 //에러
let b : boolean = false // 명시적 표현
let c : number[]= []; //number의 배열
c.push(1)
//c.push('하이') //에러
const d : any[] = []; //아무거나
d.push(1)
d.push('하이')
const player: {
readonly name: string, //읽기전용
age?: number, // ? = optional 타입 있거나 없거나
} = {
name: 'name'
}
if(player.age && player.age < 10){
// player.age가 true일 경우 player.age<10 비교
}
타입을 명시할때 별칭을 사용할 수 있다.
type Player = { //첫글자는 대문자로
name: string,
age?: number, // ? = optional 타입
}
const playerone : Player = {
name: 'name'
}
const playertwo : Player = {
name: 'name',
age:23
}
function playerMaker(name:string) : Player {//return값 타입선언
return {
name,
}
}
함수 : 타입 { }
const tuple: [string, number, boolean] = ['name', 12, false];
항상 정해진 갯수의 요소를 가져야 하는 array를 지정할 수 있다
let num : unknown ;
if(typeof num === 'number'){ //unknown 의 type이 number인지 확인
const total=num + 2; //확인이 돼야 실행가능
}
변수의 타입을 미리 알지 못할 때 사용
function hello() {
console.log('하이') //ts가 return이없으면 스스로 void임을 인식함
}
아무것도 return하지 않는 함수를 void로 지정
function err():never{
throw new Error('xxx'); //리턴할일이 없기때문에 never
}
function never(name: string | number) { //name은 string 또는 number
if (typeof name == 'string') {
name += '하이'; //이 안에있는 name은 String이된다
} else if (typeof name == 'number'){
name += 2; // 이 안에 있는 name은 number가 된다
}else {
name //name이 string 아니면 number라고 선언해서 작동될일 없기떄문에 never가 된다
}
}
함수가 절대 리턴하지 않을때 ex)오류처리
또는 작동될일 없을때.