
기본적으로 타입스크립트 Language server에 의해 타입이 추론되게 됩니다

이미지와 같이 test 변수에서 어떤 타입을 return 해주는지 자동으로 보여줍니다.
test(123) 실행시 타입 에러가 발생한다.test 함수는 타입이 String인 text 파라미터를 가지고 있습니다.'text'가 사용됩니다. 그리고 아무런 동작없이 파라미터를 그대로 return 하기 때문에 return값을 String 타입으로 추론하게 됩니다.// return 값이 string으로 고정되기 때문에 Number값을 전달해도 에러가 발생하지 않는다
const test = (text = 'text') => {
return String(text)
}제네릭에 전달한 타입 값으로 타입을 추론하여 사용하는 것이 기본 개념입니다.
interface Dropdown<T> {
value:T;
title:string;
}
interface DetailedDropdown<K> extends Dropdown<K> {
description:string;
tag:K;
}
// 예시
const test:DetailedDropdown<string> = {
description:string;
tag:string;
value:string;
title:string;
}
extends에 의해 확장되어 Dropdown의 전달된 K도 DetailedDropdown에 전달한 타입으로 추론됩니다.
타입을 추론할 때 number 일수도 있고? string 일수도 있고?
이럴 경우에는 가장 근접한 타입을 추론해서 그 값들을 표현해줍니다.

위에 배열 안에 값으로 number타입과 null 타입이 있는 걸 알 수 있고 가장 근접한 타입을 추론해서 (number | null)[] 타입이라고 명시해주고 있습니다.
타입스크립트에서 타입을 추론하는 또 하나의 방식은 바로 코드의 위치(문맥)로 타입을 결정하는 것입니다.
window.onmousedown = function(mouseEvent) {
console.log(mouseEvent.button); //<- OK
console.log(mouseEvent.studyveryhard); //<- Error!
};
window.onmousedown에 할당되는 함수의 타입을 추론하기 위해 window.onmousedown 타입을 검사합니다. MouseEvent와 연관이 있다고 추론하기 때문에 mouseEvent 인자에 button 속성은 있지만 studyveryhard 속성은 없다고 결론을 내립니다.MouseEvent 타입으로 추론을 하는 이유는 onmousedown에 설정된 타입을 보면 알 수 있습니다.문맥상 판단하기 때문에 아래 onscroll 메소드에서는 에러가 발생합니다.
// uiEvent로 타입을 판단하기 때문에 에러가 발생한다.
window.onscroll = function (uiEvent) {
console.log(uiEvent.button); //<- Error!
}
타입스크립트(Language Server) 서버는 통합 개발 환경(IDE) 같은 클라이언트 도구들에게 타입스크립트 코드의 분석, 오류 검출 및 리팩토링과 같은 기능을 제공합니다.
Language Server는 여러 언어와 툴이 상호 작용할 수 있도록 설계된 표준화된 인터페이스인 Language Server Protocol(LSP)를 구현합니다.
LSP는 클라이언트와 서버 간의 통신을 위한 명세로, 언어 서버는 LSP를 따라 구현함으로써 여러 클라이언트에서 동일한 언어 서버를 사용할 수 있게 됩니다.
Language Server의 장점은 클라이언트와 서버 간의 표준화된 프로토콜을 사용하여 다양한 개발 환경에서 동일한 언어 서버를 사용할 수 있게 해줍니다. 따라서 여러 편집 툴에서 동일한 언어 서버를 사용하여 일관된 개발 경험을 제공할 수 있습니다.