JavaScript Data Type
- Primitive: number, string, boolean, bigint, symbol, null, undefined
- Object: function, object, array ...
const num1: number = 1; const num2: number = 0.01; const num2: number = -12; const num: number = "string"; //Type 'string' is not assignable to type 'number'.
할당하는 데이터 타입이 숫자이다.
자연수, 정수, 음수 모두 가능하다. (이외 타입을 가진 데이터가 들어갈 경우, error가 발생한다.)
const str: string = "string입니다.";
const boolean1: boolean = true; const boolean2: boolean = false;
let name: undefined; let age: number | undefined; // number 타입의 값이 존재하거나, 또는 undefined을 할당('|': or를 뜻한다.) age = 1; age = undefined;
할당되는 데이터 타입이 undefined이다.
undefined만 선언될 경우, 어떠한 타입의 데이터도 해당 변수에 할당되지 못하기 때문에, undefined만 단독적으로 할당하지 않고 optional로 사용한다.
let person: null; let person2: string | null; // |: or를 뜻한다. person2 = "yongmin"; person2 = null;
할당되는 데이터 타입이 null이다.
undefined과 마찬가지로, null 또한 직접 할당하지 않고 optional로 사용한다.
let notSure: unknown = 0; notSure = undefined; notSure = "anytype"; notSure = true;
할당되는 데이터 타입이 unknown, 뜻 그대로 할당되는 데이터 타입을 알 수 없다.
타입이 없는 자바스크립트와의 연동을 위해 사용하며 (자바스크립트의 return값 타입을 모를 경우), 그 이외의 경우에는 사용하지 않는 것을 권장한다.
let anything: any = 0; notSure = undefined; notSure = false; // function Add(a, b) { return a + b; // return값이 any로 확인됨 }
할당되는 데이터 타입이 any, 모든 데이터 타입의 값을 할당할 수 있다. (unknown은 모른다면, any는 뭐든지 가능한 느낌?)
위의 Add
함수처럼 Add의 parameter의 타입을 결정하지 않을 경우 자동으로 any으로 타입이 결정됨을 확인할 수 있다.
function print() { // function print(): void console.log("i'm void"); } // function print2(): void { console.log("i'm, void"); // 타입을 명시하는 것을 권장한다. }
함수에서 return
값이 없을 때 (비어 있을 때) 자동으로 void
로 지정된다.
자동 지정이 되어도, 타입을 명시하는 것이 관례적이므로, 왠만하면 작성하도록 하며 변수에는 지정하지 않도록 하자. (return
값 자체가 비어있어 undefined
만 할당할 수 있기 때문)
function throwError(message: string): never { // message => server(log) 서버쪽에 에러메세지를 남긴 후에 throw new Error(message); //에러를 던질 수 있다. }
드림코딩 엘리님의 TS 및 OPP 강의