아요 개발 일기

[Swift] 타입 추론(Type inference)과 타입 어노테이션(Type annotation) 본문

Swift/Grammar

[Swift] 타입 추론(Type inference)과 타입 어노테이션(Type annotation)

소진이 2022. 12. 30. 11:53

안녕하세요 소진입니다!

오늘은 타입 추론과 타입 어노테이션에대해 알아보도록하겠습니다!

이 글을 꼼꼼한 재은씨의 Swift : 문법편을 참고하여 작성하였습니다 :-)

 


 

타입 추론 (Type inference)

변수나 상수를 초기화할 때 입력된 값을 분석하여 변수에 적절한 타입을 컴파일러가 스스로 추론하는 기능입니다.

 

var age : Int = 30;   
var age = 30; // Int 타입으로 추론

 

Q. 그럼 항상 타입 추론을 사용하면 편하지 않나요???

A. 타입 추론은 타입을 완벽하게는 읽지 못하기때문에 타입을 명시적으로 선언해야 할 때가 많습니다.

 

예를 들어, 아래 코드를 보면 Float형을 원했지만 Double형으로 추론 된 것을 볼 수 있습니다.

var num = 0.5 // Float형 변수를 선언하고 싶었지만 타입 추론기는 Double형으로 타입을 추론  
var num1 = 1 // Int 타입추론  
var num2 : Float = 2 // Folat 타입으로 "2.0"이 출력 

 



타입 어노테이션 (Type annotation)

변수나 상수를 선언할 때 그 타입을 명시적으로 선언해 줌으로써 어떤 타입의 값이 저장될 것인지를 직접 알려줌으로써 어떤 타입의 값이 저장될 것인지를 컴파일러에 직접 알려줍니다.

 

  • 선언 : 변수 / 상수 이름 : 타입
// 선언 + 타입 어노테이션

var year : Int  // 명시적 Int
var name : String  // 명시적 String

// 초기화
name = "sojin" 

var year : Int = 2020  
var name : String = "소진"

 

Q. 타입 어노테이션 언제 사용되나요?

  1. 선언과 초기화를 분리할 경우 ( 상수는 분리 불가능)
  2. 타입 추론으로 얻어지는 타입이 아닌, 다른 타입을 직접 지정할 필요가 있는 경우

이 두 가지 경우를 제외한 나머지는 타입 어노테이션을 생략하고 타입 추론에 의존하면 됩니다.

 


이렇게 오늘은 Type inference와 Type annotation에 대해 설명해 보았습니다 :-)

 

이번 포스팅의 포인트는

 

타입을 지정하지 않아도 타입 추론에 의해 타입을 얻어낼 수 있지만,
오류가 날 수 있는 타입은 타입 어노테이션을 사용하여 타입을 직접 지정하는게 좋다!!

 

인 것 같습니다ㅎㅎ