TypeScript 문법에는 js와 유사한 부분도 있고, 완전히 새로운 문법도 있습니다. 여기에서는 js와 유사한 문법들을 위주로 다루도록 하겠습니다.
const 변수명: 타입 = 값;
let a: number = 1;
a = 2;
// a = 'hello' < type error 발생
let b: string = 'hello';
let c: boolean = true;
let d: undefined;
let e: null = null;
const msg: string = '타입스크립트를 배워보자';
const num: number = 100;
function 함수명(변수: 타입) {
//...
}
function sum(x: number, y: number) {
return x + y;
}
// 명시적으로 타입을 지정하는 것도 가능
//function sum(x: number, y: number): number {
// return x + y;
//}
const sum = (...numbers: number[]): number => {
return numbers.reduce((a, b) => a + b, 0);
}
console.log(sum2(1, 2, 3, 4, 10))
배열에서 타입 지정하는 방법
1.type[ ]
2.Array<type>
let numArr: number[] = [1, 2, 3, 4, 5];
//let numArr: Array<number> = [1, 2, 3, 4, 5];
let strArr: string[] = ['apple', 'banana', 'melon'];
// let strArr: Array<string> = ['apple', 'banana', 'melon'];
let arr: Array<string | number> = ['apple', 'banana', 'melon', 1];
let arr2: (number | boolean | string)[] = [1, true, 'string'];
let arr: any[] = [1, 2, 3, 'wow', true, null];
let obj: object = {
name: 'Rara',
grade: 1,
};
const OlimpicNewGame: readonly [{name: string, type: string}, boolean] = [{name2: '쇼트트랙', type: '혼성'}, true];
Readonly
는 이후 포스터에서 다룰 TS 고유 문법과도 관련이 있습니다.
const drink: readonly [string, number] = ['사이다', 1000];
drink2.push('음료수');
에러:
Property 'push' does not exist on type 'readonly [string, number]'
const OlimpicNewGame: readonly [{name: string, type: string}, boolean] = [{name2: '계주', type: '혼성'}, true];
에러:
Object literal may only specify known properties, but 'name2' does not exist in type '{ name: string; type: string; }'. Did you mean to write 'name'?