T-Ruby v0.0.42 릴리스
T-Ruby v0.0.42는 크리스마스에 출시된 Ruby 4.0을 완벽하게 지원합니다. (PR#28)
T-Ruby v0.0.42는 크리스마스에 출시된 Ruby 4.0을 완벽하게 지원합니다. (PR#28)
T-Ruby v0.0.41에서는 키워드 인자 문법이 도입되어 더 표현력 있는 타입 어노테이션이 가능해졌습니다. (PR#27)
T-Ruby v0.0.40에서는 접근제한자 지원과 heredoc 감지 등 파서가 크게 개선되었습니다. (PR#22)
T-Ruby가 이제 코드에서 반환 타입을 자동으로 추론합니다. 명백한 타입에 대해 더 이상 명시적 어노테이션이 필요 없습니다!
이전에는 이렇게 작성해야 했습니다:
def greet(name: String): String
"Hello, #{name}!"
end
이제 반환 타입은 선택사항입니다:
def greet(name: String)
"Hello, #{name}!"
end
T-Ruby가 greet이 String을 반환한다고 추론하고 올바른 RBS를 생성합니다:
def greet: (name: String) -> String
새로운 타입 추론 엔진은 메서드 본문을 분석하여 반환 타입을 결정합니다:
"hello" → String, 42 → Integerstr.upcase → Stringif/else 분기에서 유니온 타입class Calculator
def double(n: Integer)
n * 2
end
def is_positive?(n: Integer)
n > 0
end
end
생성된 RBS:
class Calculator
def double: (n: Integer) -> Integer
def is_positive?: (n: Integer) -> bool
end
class User
def initialize(name: String)
@name = name
end
def greeting
"Hello, #{@name}!"
end
end
생성된 RBS:
class User
@name: String
def initialize: (name: String) -> void
def greeting: () -> String
end
추론 시스템은 TypeScript의 접근 방식에서 영감을 받았습니다:
구현에 대한 심층 분석은 기술 블로그 포스트를 확인하세요.
최신 T-Ruby로 업데이트하고 자동 타입 추론을 즐기세요:
gem update t-ruby
기존 코드는 이전과 동일하게 동작합니다 - 명시적 타입이 여전히 우선됩니다. 추론은 반환 타입이 생략된 경우에만 작동합니다.
타입 추론 사용 경험을 듣고 싶습니다. 엣지 케이스를 발견하셨나요? 제안이 있으신가요? GitHub에서 이슈를 열어주세요.
즐거운 타이핑 되세요!