HarmonyOS Next 개발을 위한 Cangjie 언어의 타입 시스템과 타입 추론 활용법

정적 타입 시스템: 컴파일 시점의 안전성 보장

Cangjie 언어는 정적 타입 시스템을 채택하여 모든 변수, 함수, 표현식의 타입이 컴파일 시점에 결정됩니다. 이는 다음과 같은 이점을 제공합니다:

이점설명
타입 안전성타입 불일치로 인한 런타임 오류 사전 방지
유지보수성 향상명확한 인터페이스 계약과 조기 오류 발견
성능 최적화컴파일러의 타입 기반 최적화 가능
개발 도구 지원정확한 자동 완성 및 리팩토링 기능

Cangjie 언어의 기본 데이터 타입은 다음과 같이 세분화되어 있습니다:

Cangjie 타입설명
Int8, Int16, Int32, Int64다양한 비트 너비의 정수 타입
Float32, Float64단정밀도 및 배정밀도 부동소수점
String문자열 타입
Bool불리언 타입

타입 불일치 시 컴파일 오류가 발생합니다:

let numberValue: Int32 = "123" // ❌ 컴파일 오류: 타입 불일치

타입 추론: 효율적인 개발 경험

Cangjie는 강력한 타입 추론 기능을 제공하여 코드 작성을 간소화합니다.

1. 변수 정의 시 타입 추론

초기값 할당 시 타입을 자동으로 추론합니다:

let numericValue = 123      // Int64로 추론
var textValue = "hello"     // String으로 추론
let flagValue = true        // Bool로 추론

2. 함수 반환값 타입 추론

함수 본문의 마지막 표현식을 기반으로 반환 타입을 추론합니다:

func sum(x: Int, y: Int) {
    x + y
}

복잡한 함수의 경우 명시적 타입 선언을 권장합니다.

3. 제네릭 매개변수 추론

제네릭 함수 사용 시 타입 매개변수를 자동으로 추론합니다:

func transform(input: Array<T>, converter: (T) -> R) -> Array<R> {
    // 변환 로직
}

let result = transform([1, 2, 3]) { element -> element.toString() }
// Array<String> 타입으로 추론

Cangjie 타입 추론 지원 현황

시나리오추론 지원비고
변수 초기화✅초기값 할당 시 추론
함수 반환값✅단순 함수에서 추론
제네릭 매개변수✅자동 추론 지원
람다 표현식🟡컨텍스트에 의존적
클래스 멤버 변수❌명시적 선언 필요

실전 예제: 타입 추론 활용

func getFirstEvenNumber(numbers: Array<Int>) -> Int? {
    for number in numbers {
        if number % 2 == 0 {
            return number
        }
    }
    return nil
}

func main() {
    let numberList = [1, 3, 5, 8, 9, 10]
    let firstEven = getFirstEvenNumber(numberList)

    when (firstEven) {
        is Int -> print("첫 번째 짝수: ${firstEven}")
        else -> print("짝수를 찾을 수 없음")
    }
}

이 예제에서:

  • numberList는 Array로 추론
  • firstEven은 Int? (널 가능 타입)로 추론
  • when 표현식이 추론된 타입을 기반으로 패턴 매칭 수행

태그: Cangjie HarmonyOS NEXT 타입 시스템 타입 추론 정적 타입

9월 28일 00:43에 게시됨