Open devjy39 opened 1 year ago
2012년 마이크로소프트가 발표한 타입스크립트(TypeScript)는 자바스크립트(JavaScript)를 기반으로 정적 타입 문법을 추가한 프로그래밍 언어입니다.
자바스크립트는 동적 타입의 인터프리터 언어로 런타임에서 오류를 발견할 수 있습니다. 이에 반해 타입스크립트는 정적 타입의 컴파일 언어이며 타입스크립트 컴파일러 또는 바벨(Babel)을 통해 자바스크립트 코드로 변환됩니다. 코드 작성 단계에서 타입을 체크해 오류를 확인할 수 있고 미리 타입을 결정하기 때문에 실행 속도가 매우 빠르다는 장점이 있습니다.
타입스크립트는 코드에 목적을 명시하고 목적에 맞지 않는 타입의 변수나 함수들에서 에러를 발생시켜 버그를 사전에 제거합니다. 또한 코드 자동완성이나 실행 전 피드백을 제공하여 작업과 동시에 디버깅이 가능해 생산성을 높일 수 있습니다. 실제로 한 연구에 따르면 모든 자바스크립트 버그의 15%가 사전에 타입스크립트로 감지할 수 있다고 합니다.
java 10에서는 개발자가 종종 불필요한 로컬 변수 유형의 매니페스트 선언을 제거할 수 있도록 함으로써 정적 유형 안전성에 대한 Java의 약속을 유지하고 Java 코드 작성과 관련된 의식을 줄여 개발자 경험을 개선하려고 합니다.
Java 10에서 도입된 var는 변수를 선언할 때 타입을 생략할 수 있으며, 컴파일러가 타입을 추론합니다. 컴파일 시점에 var 변수에 초기화된 ‘값’을 보고 추론해서 바이트코드에 명시적으로 타입이 결정이 되있는 상태라, 타입추론 변수를 읽을 때 마다 타입을 알아내기 위한 연산을 하지 않기 때문에 런타임 오버헤드가 없습니다. 또한 var로 선언된 변수는 중간에 타입이 절대 변경되지 않습니다.
이니셜라이저가 포함된 지역 변수 선언, 향상된 for
루프 인덱스 및 기존 for 루프에서 선언된 인덱스 변수의 var
경우 매니페스트 유형 대신 예약된 유형 이름이 허용되도록 허용합니다. 식별자는 var
키워드가 아닌 예약된 유형 이름이다.
//java 10 전
String str = "hi jaeyeol";
//java 10 후
var str = "hi jaeyeol";
//ArrayList 예시
ArrayList<String list = new ArrayList<String>(); // before
var list = new ArrayList<String>(); // infers ArrayList<String>
//반복문
int[] arr = {1, 2, 3};
for(int n : arr) {//before
System.out.println("n : " + n);
}
for (var n : arr) {//after
System.out.println("n : " + n);
}
var는 지역 변수를 선언할 때만 사용할 수 있습니다. 클래스의 멤버 변수를 선언할 때 사용할 수 없습니다.
class Var {
public var str = "aaa"; // compile error
public var list = new ArrayList<String>(); //compile error
}
초기화 필요
var n; // (cannot use 'val' on variable without initializer)
null 초기화 X
var map = null; // (variable initializer is 'null')
lambda X
var f = () -> { }; //(lambda expression needs an explicit target-type)
array X
var k = { 1 , 2 }; // (array initializer needs an explicit target-type)
문제
contents - 세부 내용
참고