Static type checking이 가능(프로그램 실행 전에도 오류 탐지 가능) 타입스크립트는 값을 통해 타입을 추론한다.TS는 JS의 수퍼셋이기 때문에 JS 자체 또한 유효한 TS 문법이다. 그래서 기존의 JS 코드를 그대로 TS에 집어넣고 사용해도 문제가 없다.
기존 JS 타입인 booleanbigintnullnumberstringsymbolundefined이외에도 타입스크립트만의any: 그 어떤 타입의 값도 인정하는 타입unknown: 이 타입으로 선언을 했으면 나중에 해당 타입을 아래 코드처럼 명시해주어야 한다.('Any'
타입스크립트에서는 개별 타입들을 갖고 좀더 복합적인 타입을 만드는 것이 가능하다. 이를 할 수 있는 대표적인 방법 두 가지는 Unions와 Generics이다. 굳이 설명할 필요 없이 이 이미지를 보면 이해된다.자바에서의 제네릭과 유사하다. 제네릭은 타입에 가변적인 내
전통적인 객체 지향 언어인 Java, C함수가 굳이 클래스 등 안에 존재할 필요가 없고Static Class같은 개념도 없다. 타입에 관한 개념도 다른데 기존 언어에는 string이거나 int일 수 있는 타입 이라는 개념을 나타낼 수가 없다. 하지만 타입스크립트에서는
특정 Object 타입에서 어떤 프로퍼티가 존재할 수도 있고 없을 수도 있다는 것을 나타내려면 ? 기호를 사용해서 나타낸다. 이때 주의해야할 것은 해당 property에 접근할 때는 undefined인지 아닌지(참고: JS에서는 특정 객체에 없는 property에 접근
...(파일 확장자는 .ts로)tsc (파일명).ts(에러가 있어도 컴파일이 되기는 한다!)만약 에러가 있으면 컴파일이 안 되게 하려면 --noEmitOnError 옵션을 주고 실행하면 된다. tsc --noEmitOnError (파일명).tstsc = TypeScri
말그대로 특정 타입에 붙이는 alias이다. 그냥 특정 타입에 이름을 붙인 것이다. 그러니까 이 코드에서는 { x: number; y: number; } 이 타입에 Point라는 alias를 붙인 것이고 이 코드에서는 number | string이라는 Union 타입에
굳이 우리말로 번역하자면 '타입 단언'이라는 뜻으로 개발자가 특정 값에 대해 특정 타입일 것임을 확신하는 경우 이렇게 as를 붙여서 타입을 단언할 수 있다. 위의 코드는 아래와 같이 쓸 수도 있다. (개인적으로 전자가 이해하기 직관적인 것 같다)하지만 Type asse
string이나 number 같은 타입 말고 값 자체가 타입이 되는 것도 가능하다. 잠깐 var나 let말고 const를 생각해보자. const는 변수에 한번 값이 할당되고 나면 그 값을 바꿀 수 없다. 예를 들어 이렇게 let으로 변수를 선언하고 문자열 값을 대입하면
JS에는 다음과 같은 미묘한 값들이 있다. null(absence)undefined(uninitialized)타입스크립트에서는 같은 이름을 가진 2개의 타입이 있는데 이 점을 잘 기억해야 한다. 이때 이 타입들에 관한 컴파일 옵션으로 strictNullChecks라는
이 코드는 에러가 난다. 왜냐하면 string이 될지도 모를 padding을 1과 더하고 있기 때문이다. 하지만 코드를 이렇게 고치면 에러가 발생하지도 않고 대신 padding의 타입이 number로 좁혀진다. 이렇게 타입스크립트는 자동으로 if/else문, condi
이런 식으로 당연히 함수의 타입에도 type alias를 붙일 수 있다. 자바스크립트에서는 function도 프로퍼티를 가질 수 있다. 하지만 방금 위에서 살펴본 function type expression으로는 프로퍼티를 표현할 수가 없다. 만약 이걸 굳이 표현하려면
: 물음표(?)만약 Object Destructuring을 사용하고 싶다면 이런 식으로 기본값을 주면 된다.Object Destructuring을 할 때 주의해야할 점은 위 코드에서처럼 Destructuring을 할 때 alias를 주는 문법과 타입스크립트에서의 타입
제네릭 함수를 설정하고 호출할 때는 타입파라미터를 이런 식으로 지정하고 호출해도 되고, 그렇게 하지 않아도 타입스크립트가 type argument inference를 해주기도 한다. 하지만 복잡한 코드에서라면 inference가 안 되는 경우도 있으므로 이럴 때는 명
타입스크립트는 자바스크립트의 클래스 또한 완벽하게 지원한다. 클래스에 관해 반드시 알아야하는 컴파일 옵션이 있는데 --strictPropertyInitialization 옵션이 그것이다. 이 옵션이 true이면 이런 식으로 특정 프로퍼티를 initialization하는