๋ฐ์ดํฐ ํ์
- JS ๊ธฐ๋ณธ ์๋ฃํ์ ํฌํจ(superset)
- Boolean, Number, String, Null, Undefined, Symbol
- Array : objectํ
- Any, Void, Never, Unknown
- Enum
- Tuple: objectํ
Primitive Type
- ์ค๋ธ์ ํธ์ ๋ ํผ๋ฐ์ค ํํ๊ฐ ์๋ ์ค์ ๊ฐ์ ์ ์ฅํ๋ ์๋ฃํ
- ES2015 ๊ธฐ์ค 6๊ฐ์ง
boolean
number
string
null/undefined
- ๊ฐ๊ฐ undefined, null์ด๋ผ๋ ํ์
์ ๊ฐ์ง๋ค
- ๋ ๋ค ์๋ฌธ์๋ง ์กด์ฌํ๋ค.
- void์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ทธ ์์ฒด๋ก๋ ๊ทธ๋ค์ง ์ ์ฉํ์ง ์๋ค.
null
- null์ด๋ผ๋ ๊ฐ์ผ๋ก ํ ๋น๋ ๊ฒ
- ๋ฌด์ธ๊ฐ๊ฐ ์๋๋ฐ, ์ฌ์ฉํ ์ค๋น๊ฐ ๋ ๋ ์ํ
** ๋ฐํ์์์ typeof ์ฐ์ฐ์๋ฅผ ์ด์ฉํด์ ์์๋ด๋ฉด object
undefined
- ๊ฐ์ ํ ๋นํ์ง ์์ ๋ณ์
- ์ ์ธ๋งํ๊ณ ๊ฐ์ ํ ๋นํ์ง ์์ ์ํ
- object์ ํ๋กํผํฐ๊ฐ ์์ ๋๋ undefined
** ๋ฐํ์์์ typeof ์ฐ์ฐ์๋ฅผ ์ด์ฉํด์ ์์๋ด๋ฉด undefined
symbol
object
- 'primitive type์ด ์๋ ๊ฒ'์ ๋ํ๋ด๊ณ ์ถ์ ๋ ์ฌ์ฉ
declare function create(o: object | null): void;
Array
let list: number[] = [1,2,3];
let list_: (number | string)[] = [1,2,3,'4'];
let List: Array<number> = [1,2,3];
Tuple
- array์ ๋ฌ๋ฆฌ ํญ์ ์์์ ํ์
, ๊ธธ์ด๊ฐ ์ผ์นํด์ผํ๋ค.
let x: [string, number];
x = ['hello', 20];
Any
- ์ด๋ค ํ์
์ด์ด๋ ์๊ด์๋ ํ์
- ํ์ง๋ง ์ต๋ํ ์ฐ์ง ์๋๊ฒ ํต์ฌ
-> ์ปดํ์ผ ํ์
์ ํ์
์ฒดํฌ๊ฐ ์ ์์ ์ผ๋ก ์ด๋ฃจ์ด์ง์ง ์์ ์ ์๊ธฐ ๋๋ฌธ์
-> ๋์ ๋ฐ์
- ํ์
์์ ์ฑ์ ํ์
์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ์ฃผ์ ๋๊ธฐ ์ค ํ๋์ด๋ฉฐ ํ์ํ์ง ์์ ๊ฒฝ์ฐ์๋ any๋ฅผ ์ฌ์ฉํ์ง ์๋๋ก ํด์ผํ๋ค.
- ๊ฐ์ฒด๋ฅผ ํตํด ๊ณ์ ์ ํ๋๋ค.
let looselyTyped:any = {};
const d = looselyTyped.a.b.c.d;
Unknown
- any๊ฐ ๊ฐ์ง ํ์
๋ถ์์ ์ ํด์ํ๊ธฐ ์ํ ๋์ฒด์
- any์ ๊ฐ์ด ์๋ฌด๊ฑฐ๋ ํ ๋นํ ์ ์๋ค.
- ์ปดํ์ผ๋ฌ๊ฐ ํ์
์ ์ถ๋ก ํ ์ ์๊ฒ๋ ํ์
์ ์ ํ์ ์ขํ๊ฑฐ๋
- ํ์
์ ํ์ ํด์ฃผ์ง ์์ผ๋ฉด ๋ค๋ฅธ ๊ณณ์ ํ ๋น ํ ์ ์๊ณ , ์ฌ์ฉํ ์ ์๋ค.
- ์ปดํ์ผ๋ฌ์ ๋ฏธ๋์ ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์๊ฒ ์ด ๋ณ์๊ฐ ๋ฌด์์ด๋ ๋ ์ ์์์ ์๋ ค์ฃผ๋ ํ์
Never
function err(msg:string): never {
throw new Error(msg);
}
function fail() {
return err('failed');
}
function infiniteLoop(): never {
while(true) {}
}
- ๋ชจ๋ ํ์
์ ์๋ธํ์
์ด๋ฉฐ ๋ชจ๋ ํ์
์ ํ ๋น ํ ์ ์๋ค.
- ํ์ง๋ง, ๊ทธ ์ด๋ค ํ์
(any ์กฐ์ฐจ๋) ํ ๋น ํ ์ ์๋ค.
- ์๋ชป๋ ํ์
์ ๋ฃ๋ ์ค์๋ฅผ ๋ง๊ณ ์ ํ ๋ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
let A:string = 'hello';
if (typeof A !== 'string') {
A;
}
Void
- ์ด๋ค ํ์
๋ ๊ฐ์ง์ง ์๋ ๋น ์ํ
- ๋ฆฌํด ํ์
์ผ๋ก ์ฌ์ฉ
function returnVoid(msg:string): void {
console.log(msg);
return;
}
const r = returnVoid('๋ฆฌํด์ด ์๋ค.')