해당 내용은 codeit 강의 및 w3schools 번역을 참고하여 작성한 글입니다.
올바르지 않은 내용이 있다면 의견 남겨주세요. 언제든지 환영입니다.
1. TypeScript 기본형 작성방법
// : string과 같은 타입을 생략해도 된다.
// TypeScript는 처음에 세팅된 값의 타입이 아닌 값을 변경시에 오류를 보여준다.
let itemName: string = '펭수';
let itemPrice: number = 129000;
let membersOnly: boolean = true;
let owner: undefined = undefined;
let seller: null = null;
TypeScript 기본형
2. 배열과 튜플
// 배열 선언
const carts: string[][] = [
['c001', 'c002']
];
const current :[number, number] = [0, 0];
const items: string[] = [
'갑옷' ,'빨간 물약'
];
// 튜플(길이와 각 요소마다의 타입이 고정된 배열) 선언
let myTuple : [number , boolean , string];
let mySize: [number, number, String] = [5,6,'55'];
mySize.push(0,0,'11');
console.log(mySize);
배열과 튜플
mySize.push('1234');
// 위와 같이 작성하면 mySize에 [ 5, 6, '55', '1234' ]로 추가가 됨을 확인할 수 있다.
// 이런 내용을 방지하고자 'readOnly'를 추가하면 위와 같이 추가가 불가능하다.
let ourTuple: readonly [number, number, string] = [5, 6, '55'];
ourTuple.push('1234');
// prog.ts(10,10): error TS2339: Property 'push' does not exist on type 'readonly [number, number, string]'.
3. TypeScript 객체
let product: {
id: String;
name: String;
sizes: String[];
membersOnly?: boolean; //?는 optional property
} = {
//id: 1 이렇게 하면 해당 오류 알려준다
id: 'c001',
name: '코드잇 블랙 후디',
sizes: ['M', 'L', 'XL']
}
optional property는 필수로 정의하지 않아도 되는 속성이다. 위의 코드에서 memeberOnly 뒤에 ?를 표시하였는데, 이건 필수로 정의하지 않아도 된다. 만약 없다면 오류 발생한다.
// 속성 정의되지 않았을 때 쓰는 방법
// index 대신 어떤 이름이든 상관 없다. 다만 속성명은 String이고 속성 값이 number라는 정의만 지키면 된다.
const nameAgeMap: { [index: string]: number } = {};
nameAgeMap.Jack = 25; // no error
nameAgeMap.Mark = "Fifty"; // Error: Type 'string' is not assignable to type 'number'.
console.log(nameAgeMap);