타입 지정하는 방법
변수명 : 타입명
let name : string = 'kim';
let age : number = 123;
age = 'oh' // 에러
let name :string[] = ['kim', 'park']
let age : {a:number} = { a : 3 }
// array 혹은 object 자료는 이렇게 타입지정 가능
Union Type
let name : string | number = 'kim'
변수에 타입을 여러 개 지정 가능하다.
Type을 변수에 담아서 사용하기
type NameType = string | number;
let name : NameType = 'kim'
literal type
type NameType = 'kim' | 'park';
let name : NameType = 'kim'
string, number 이런 것뿐만 아니라 나만의 타입을 만들어 사용 가능하다.
변수에는 앞으로 'kim' 또는 'park'만 들어올 수 있다.
함수, 파라미터 타입 지정
function 함수명(x:number) : number {
return x*2
}
함수랑 파라미터에 타입을 지정할 수 있다. 실수로 다른 타입이 들어오거나 return 될 경우 에러를 낸다.
함수는 return 타입으로 void를 설정할 수 있는데 return이 없는지 체크할 수 있다.
타입이 확실하지 않은 변수의 연산
//에러
function 함수명(x :number | string) {
return x * 2
}
//가능
function 함수명(x :number | string) {
if (typeof x === 'number'){
return x * 2
}
}
타입스크립트는 변수의 타입이 확실하지 않으면 연산을 할 수 없다.
항상 연산하기 전 타입이 무엇인지 미리 체크하는 narrowing 또는 assertion 문법을 사용해야 연산을 허락해 준다.
tuple 타입
type Member = [number, boolean];
let john:Member = [100, false]
배열 자료 안에 순서를 포함해서 어떤 자료가 들어올지 정확히 지정하고 싶으면, 대괄호 [] 안에 들어올 자료의 타입을 차례대로 적으면 된다.
Object 타입
type MyObject = {
name? : string,
age : number
}
let 철수 :MyObject = {
name : 'kim',
age : 50
}
object 타입도 정의가 길면 type 키워드로 변수에 담아 사용 가능하다.
type 키워드 대신 비교적 최근에 나온 interface 키워드를 사용해도 무방하다. 차이점이 별로 없다.
특정 속성이 선택사항이면 물음표 기입이 가능하다 => 해당 속성이 없어도 문제없는 경우 상요
index signature
type MyObject = {
[key :string] : number,
}
let 철수 :MyObject = {
age : 50,
weight : 100,
}
object에 어떤 속성이 들어올지 아직 모른다면, 속성 전체를 지정해서 타입지정할 수 있다.
지정 가능한 타입
primitive 타입
any 타입
array 타입
tuple 타입
enum 타입
function / union / void 타입
object 타입
null / undefined 타입
never 타입
사용자 정의 타입
타입 어설션
반응형