npm 사용 (Node.js 패키지 매니저)
Visual Studio에서 플러그인 설치
Visual Studio 2017과 Visual Studio 2015 업데이트 3은 TypeScript 언어 지원을 기본적으로 포함하지만 TypeScript 컴파일러인 tsc
는 포함하지 않는다.
> npm install -g typescript
greeter.ts
에 다음 JavaScript 코드를 입력한다.function greeter(person) {
return "Hello, " + person;
}
let user = "Jane User";
document.body.textContent = greeter(user);
.ts
확장을 사용하지만, JavaScript 코드이다. 기존 JavaScript 앱에서 바로 복사/붙여넣기를 할 수 있다. 커맨드 라인에서 TypeScript 컴파일러를 실행하라.tsc greeter.ts
결과는 당신이 입력한 것과 동일한 JavaScript를 포함하는 greeter.js
파일일 것이다. 우리는 JavaScript 앱에서 TypeScript를 사용하여 실행하고 있다! 이제 TypeScript에서 제공하는 새로운 도구를 이용할 수 있다. : string 타입 표시를 ‘person’ 함수의 인수에 추가function greeter (person: string) {
return "Hello, " + person;
}
let user = "Jane User";
document.body.textContext = greeter(user);
greeter
함수를 하나의 string 파라미터와 함께 호출하도록 의도할 수 있다. 대신 array을 전달하는 greeter
를 호출하도록 변경할 수 있다.function greeter (person: string) {
return "Hello, " + person;
}
let user = [0, 1, 2];
document.body.textContent = greeter(user); // error
다시 컴파일하면, 이러한 에러를 볼 수 있을 것이다.error TS2345: Argument of type 'number[]' is not assignable to parameter of type 'string'
-> 'number[]'(숫자배열) 타입 인수는 'string'(문자열) 타입의 파라미터에 할당할 수 없다.
비슷하게, greeter
을 부를 수 있는 모든 인수를 제거해 보아라. TypeScript는 이 함수가 부른 예상하지 못한 파라미터의 수를 알려줄 것이다. 두 경우, TypeScript는 코드의 구조와 당신이 적은 타입 표시, 둘 모두에 기반을 둔 정적 분석을 제공한다. 에러가 있어도 greeter.js
파일은 여전히 생성된다는 것을 주의해라. 코드에 에러가 있어도 TypeScript를 사용할 수 있다. 하지만 이 경우에는, TypeScript는 코드가 생각한대로 동작하지 않을 수도 있다고 경고할 것이다.firstName
과 lastName
필드를 가진 객체를 설명하는 인터페이스를 사용할 것이다. TypeScript에서는, 내부 구조가 호환 가능하다면 두 개의 타입 또한 호환 가능하다. 이를 통해 명시적으로 구현하는 문장이 없어도, 인터페이스에 필요한 형태만 있으면 인터페이스를 구현할 수 있다.interface Person {
firstName: string;
lastName: string;
}
function greeter (person: Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
let user = { firstName: "Jane", lastName: "User" };
document.body.textContext = greeter(user);
public
을 사용하면 해당 이름으로 속성을 자동으로 만들 수 있다.class Student {
fullName: string;
constructor(
public firstName: string,
public middleInitial: string,
public lastName: string
) {
this.fullName = firstName + " " + middleInitial + " " + lastName;
}
}
interface Person {
firstName: string;
lastName: string;
}
function greeter(person: Person) {
return "Hello, " + person.firstName + " " + person.lastName;
}
let user = new Student("Jane", "M.", "User");
document.body.textContent = greeter(user);
tsc greeter.ts
를 다시 실행해 보면 생성된 JavaScript 와 이전의 코드가 똑같다는 것을 알 수 있다. TypeScript에서의 클래스는 JavaScript에서 자주 사용되던 프로토타입 기반 객체 지향의 축약형일 뿐이다.<!DOCTYPE html>
<html>
<head>
<title>Typescript Greeter</title>
</head>
<body>
<script src="greeter.js"></script>
</body>
</html>
브라우저에서 greeter.html을 열어 간단한 첫 번째 TypeScript 웹 앱을 실행해 보라!(en) https://www.typescriptlang.org/docs/handbook/typescript-tooling-in-5-minutes.html
(kor) https://typescript-kr.github.io/pages/tutorials/typescript-in-5-minutes.html