Type System
- ํ์
์ ๋ช
์์ ์ผ๋ก ์ง์ ํ ์ ์๋ค.
- ํ์
์ ๋ช
์์ ์ผ๋ก ์ง์ ํ์ง ์์ผ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ํ์
์ ์ถ๋ก ํ๋ค.
Type
- ํด๋น ๋ณ์๊ฐ ํ ์ ์๋ ์ผ์ ๊ฒฐ์ ํ๋ค.
JS
function f1(a) {
return a * 38;
}
console.log(f1(10))
console.log(f1('mark'))
TS
function f2(a) {
return a * 38;
}
console.log(f2(10))
console.log(f2('mark') + 5)
noImplicitAny
- ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด noImplicitAny๋ฅผ ์ด์ฉํ์ฌ ๋ฐฉ์ดํ๋ฉด any๋ฅผ ๋ช
์์ ์ผ๋ก ์ง์ ํด์ฃผ์ง ์์ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
function f3(a) {
return a * 38;
}
console.log(f3(10))
console.log(f3('mark') + 5)
strictNullChecks
- ๋ชจ๋ ํ์
์ ์๋์ผ๋ก ํฌํจ๋์ด ์๋ 'null'๊ณผ 'undefined'๋ฅผ ์ ๊ฑฐํด์ค๋ค.
function f4(a:number) {
if( a > 0 ) {
return a * 38;
}
}
noImplicitReturns
- ํจ์ ๋ด์์ ๋ชจ๋ ์ฝ๋๊ฐ ๊ฐ์ ๋ฆฌํดํ์ง ์์ผ๋ฉด ์๋ฌ๋ฅผ ๋ฐ์์ํจ๋ค.
function f4(a:number) {
if( a > 0 ) {
return a * 38;
}
}
strictFunctionTypes
- ํจ์๋ฅผ ํ ๋นํ ์์ ๋งค๊ฐ๋ณ์ ํ์
์ด ๊ฐ๊ฑฐ๋ ์ํผํ์
์ธ ๊ฒฝ์ฐ๊ฐ ์๋ ๊ฒฝ์ฐ ์๋ฌ๋ฅผ ๋ฐ์์ํจ๋ค.
TS > Structural Type System
- ๊ตฌ์กฐ๊ฐ ๊ฐ์ผ๋ฉด, ๊ฐ์ ํ์
์ผ๋ก ์ทจ๊ธํ๋ ๋ฐฉ์
interface IPerson {
name: string;
age: number;
}
type PersonType = {
name: string;
age: number;
}
let personInterface: Iperson = {} as any;
let personType: PersonType = {} as any;
personInterface = personType;
- ํ์
์ด ํ์
์ผ๋ก์จ์ ๋ชฉ์ ์ด๋ ์กด์ฌ ๊ฐ์น๊ฐ ๋ช
ํํ ๊ฒฝ์ฐ : Interface
- ์ด๋ ํ ๋์์ ๊ฐ๋ฆฌํค๋ ๋ชฉ์ : Type Alias