Javascript는 문자열과 숫자를 더할 경우, 숫자 타입의 인수 쪽을 강제적으로 타입 변환해 문자열을 만든다. 이처럼 js는 함수나 변수의 타입을 명시적으로 지정하지 않아도 동작하는 경우가 많아 예상치 못한 결과를 초래할 수 있기 때문에 이러한 문제점을 보완하기 위해 Typescript라는 언어가 등장하게 되었다!
let isShow: boolean = true;
let isDone: boolean = false;
let number1: number = 5;
let number2: number = 0.7;
let firstName: string = "coding";
let lastName: string = 'kim';
let longString: string = `Kimcoding is a developer.
He is 20 years old.`
// 따옴표로 문자열 표시하고 백틱(`)을 사용해 여러줄의 문자열 작성 가능!
//첫 번째 방법
let items: string[] = ["apple", "banana", "grape"];
//두 번째 방법 (제네릭 배열 타입)
let numberList: Array<number> = [4, 7, 100];
// ! 한가지 방법만 사용 권장 !
let user: [string, number, boolean] = ["kimcoding", 20, true];
let user: {name: string, age: number} = {
name: "kimcoding",
age: 20
}
let obj: object = {};
//에러
obj = "hello";
let maybe: any = 4;
//정상적으로 동작
maybe = true;
let printAnswer = (): void => {
console.log("YES");
}
function printValue(value: number|string): void {
if (typeof value === "number") {
console.log(`The value is a number: ${value}`);
} else {
console.log(`The value is a string: ${value}`);
}
}
printValue(10); // The value is a number: 10
printValue("hello"); // The value is a string: hello
👏 유니온 타입인 값이 있으면, 유니온에 있는 모든 타입에 공통인 멤버들에만 접근할 수 있기 때문에 유의해야함!(나머지 프로퍼티에도 접근하고 싶다면 "타입 가드"를 사용!)
interface Developer {
name: string;
skill: string;
}
interface Person {
name: string;
age: number;
}
type User = Developer & Person;
TypeScript에 대해 아주 잘 설명해주셔서 감사합니다. 저도 JavaScript의 동적 타입의 특성 때문에 예상치 못한 결과를 만나는 경우가 많았는데, TypeScript를 사용하면 그러한 문제를 피할 수 있을 것 같아요. 특히 타입스크립트의 타입이나 연산자 활용 타입에 대한 설명이 인상 깊었습니다. 앞으로 TypeScript를 더욱 적극적으로 활용해보도록 하겠습니다. 좋은 글 잘 읽었습니다!