=microsoft에서 개발한 javascript의 슈퍼셀 언어.
let isNumber: number = 3; //변수명: 타입 = 값;
let arr: number[] = [1,2,3]; //배열명: 타입[] = [선언된 타입만 들어감]
let arr: readonly number[] = [1,2,3];
// 배열 내의 값은 수정이 안되며 읽기만 가능.
let usr: [number, string, number] = [1, "1", 3];
//이 외의 값이 들어가거나 길이가 다르면 에러 남
//기본적으로 배열에 추가 할당은 안되지만, push()나 slice()를 이용해 길이를 바꾸는것은 가능
enum week {
sun, //0
mon, //1
tue, //2
...
sat //6
}
console.log(week[0]) //sun
enum color {green='green', red='red'} //이렇게 문자열로 줄수도 잇음
unknown: any와 비슷하게 어떤 값이던 할당해줄 수 있지만 uknown을 할당하지는 못한다.
객체 사용: 키의 타입을 하나하나 지정해줄 수 있다.
null, undefined: any나 unknown보다 제약이 없는 타입 혹은 값.
let str: string = null | undefined;
let idk: null = undefined;
let idk2: undefined = null; //서로의 타입이 되어줄 수 있음.
function test(name:string): void {
console.log("hello");
}
/// void자리가 함수의 반환값을 선언해주는 자리
const hello: void = hello('world');
// void타입 함수의 실제 반환 값은 undefined;
let test: (string | number) = 3 or "3"; //둘 다 에러 안남
// Error - TS2322: Type '{ name: string; age: number; isValid: boolean; }' is not assignable to type 'IUser'.
interface user1 {name: string, age: number};
interface user2 {name: string, smokes: boolean};
const userData: user1 & user2 = {name: 'Bob', age: 33, smokes: false};
console.log(userData);
function test(a:number, b:number) => {return a+b};
console.log(test(3,5)); //8
const test2 = (a: number, b: number) :number => {return a+b}
console.log(test2(9, 7)); //16
함수, 인터섹션, void, null, undefined, any, unknown, enum, tuple 요정도 기억하면 자바스크립트랑 겹치는게 많아서 괜찮을듯.