- ํ์ ์คํฌ๋ฆฝํธ๋ ํ์ ์ ์ถ๊ฐํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฅ์ํจ๋ค.
- ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ดํดํจ์ผ๋ก์จ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ ์ ์๋ฌ๋ฅผ ๊ณ ์น๋ ๋ฐ์ ๋ค์ด๊ฐ๋ ์๊ฐ์ ์ ์ฝํ๋ค.
- ์คํ์์ค
- ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ฐํ์ํจ ์ธ์ด
- ์์ํ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผ ํด์ค๋ค.
- ์ ํต์ ์ธ Compile ์ธ์ด์๋ ๋ค๋ฅธ ์ ์ด ๋ง์์ Transpile ์ด๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
- TypeScript๋ฅผ ๋ธ๋ผ์ฐ์ ์์ ์คํ์ํค๋ ค๋ฉด TypeScript Compiler๋ฅผ ์ฌ์ฉํด Plain JavaScript๋ก ๋ฐ๊ฟ ์คํํ ์ ์๊ฒ ๋๋ค.
-
node.js chrome's V8 JavaScript Engine์ ์ฌ์ฉํ์ฌ, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํด์ํ๊ณ OS ๋ ๋ฒจ์์์ API๋ฅผ ์ ๊ณตํ๋ ์๋ฒ์ฌ์ด๋์ฉ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ ํ๊ฒฝ
-
browser HTML์ ๋์ ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด ๋ธ๋ผ์ฐ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํด์ํ๊ณ , DOM์ ์ ์ดํ ์ ์๋๋ก ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ ํ๊ฒฝ
- ์ค์น npm install typescript -g
- ์คํ tsc test.ts(ํน์ ํ์ผ๋ช ์)
- ์ค์ ํ์ผ ์๋์์ฑ(tsconfig.json) tsc --init
- ํ์ผ ์์ ๋์์ ๋๋ง๋ค ์๋ก ์ปดํ์ผ tsc -w
โ TypeScript mkdir tsc-project
โ TypeScript cd tsc-project
โ tsc-project npm init -y
{
"name": "tsc-project",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
โ tsc-project ls
package.json
โ tsc-project npm i typescript
โ tsc-project cat package.json
{
"name": "tsc-project",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"typescript": "^4.6.3"
}
}
โ tsc-project ls node_modules
typescript
// ์คํ
โ tsc-project npx tsc --init
โ tsc-project nano test.ts
โ tsc-project npx tsc
โ tsc-project npx tsc -w
// package.json ์์
โ tsc-project nano package.json
{
"name": "tsc-project",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "tsc"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"typescript": "^4.6.3"
}
}
// ์คํ
โ tsc-project npm run build-
ECMAScript Primitive Type 6๊ฐ์ง
- Boolean
- Number
- String
- Null
- ๋ฌด์ธ๊ฐ๊ฐ ์๋๋ฐ, ์ฌ์ฉํ ์ค๋น๊ฐ ๋ ๋ ์ํ
- null์ null๋ง ๊ฐ์ง ์ ์์
- typeof ํ๋ฉด object๋ก ๋์ด
- Undefined
- ๊ฐ์ ํ ๋นํ์ง ์์ ๋ณ์๋ undefined๋ผ๋ ๊ฐ์ ๊ฐ์ง๋ค.
- ์์ ์ค๋น๊ฐ ์ ๋ ์ํ
- typeof ํ๋ฉด undefined ๋์ด
- Symbol
- Array: object
-
ts์์ ์ถ๊ฐ๋ ํ์
- Any, Void, Never, Unknown
- Enum
- Tuple: objectํ
- ์ปดํ์ผ๋ฌ์๊ฒ ์ฌ์ฉํ๋ ํ์ ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ๋ ์์คํ
- ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ํ์ ์ ์ถ๋ก ํ๋ ์์คํ
-
ํ์ ์คํฌ๋ฆฝํธ์ ํ์ ์์คํ
- ํ์ ์ ๋ช ์์ ์ผ๋ก ์ง์ ๊ฐ๋ฅ
- ๋ช ์์ ์ผ๋ก ์ง์ ํ์ง ์์ผ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ํ์ ์ ์ถ๋ก
-
ํ์ ์ด๋ ํด๋น ๋ณ์๊ฐ ํ ์ ์๋ ์ผ์ ๊ฒฐ์ ํ๋ค.
-
ํ์ ์คํฌ๋ฆฝํธ์ ์ถ๋ก ์ ์์งํ๋ ๊ฒฝ์ฐ
// a์ ํ์
์ ๋ช
์์ ์ผ๋ก ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ์ด๊ธฐ ๋๋ฌธ์ a๋ any๋ก ์ถ๋ก ๋๋ค.
function f3(a) {
return a * 38;
}
// ์ฌ์ฉ์๋ a๊ฐ any์ด๊ธฐ ๋๋ฌธ์, ์ฌ์ฉ๋ฒ์ ๋ง๊ฒ ๋ฌธ์์ด์ ์ฌ์ฉํ์ฌ ํจ์๋ฅผ ์คํํ๋ค.
console.log(f3( 10 ) ) // 380
console.log(( f3 ( 'Mark' ) + 5)) // NaN-
nolmplicitAny์ต์
- ํ์ ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ, ํ์ ์คํฌ๋ฆฝํธ๊ฐ ์ถ๋ก ์ค any๋ผ๊ณ ํ๋จํ๊ฒ ๋๋ฉด ์ปดํ์ผ ์๋ฌ๋ฅผ ๋ฐ์์์ผ ๋ช ์์ ์ผ๋ก ์ง์ ํ๊ฒ ํ๋ค.
-
strictNullChecks
- ๋ชจ๋ ํ์ ์ ์๋์ผ๋ก ํฌํจ๋์ด ์๋ null, undefined๋ฅผ ์ ๊ฑฐํด์ค๋ค. ๋ฌด์กฐ๊ฑด ์ผ์ผํ๋ค.
-
noImplicitReturns
- ํจ์ ๋ด์์ ๋ชจ๋ ์ฝ๋๊ฐ ๊ฐ์ ๋ฆฌํดํ์ง ์์ผ๋ฉด, ์ปดํก๋ฆฌ ์๋ฌ๋ฅผ ๋ฐ์์ํจ๋ค.
-
object literal typescript
function f7(a: {name: string; age: number}): string{
return ~~~
}- ๋๋ง์ ํ์ ์ ๋ง๋๋ ๋ฐฉ๋ฒ
interface PersonInterface {
name: string;
age: number;
}
type PersonTypeAlias = {
name: string;
age: number;
}
function f8(a: PersonInterface): string {
return ~~~
}- Structural Type System : ๊ตฌ์กฐ๊ฐ ๊ฐ์ผ๋ฉด ๊ฐ์ ํ์ ์ผ๋ก ์ทจ๊ธ -> TypeScript๋ ์ด๊ฑฐ
- Nominal Type System : ๊ตฌ์กฐ๊ฐ ๊ฐ์๋ ์ด๋ฆ์ด ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ํ์
- strictFunctionType์ ์ผ๋ฉด ํจ์๋ฅผ ํ ๋นํ ์์ ํจ์์ ๋งค๊ฐ๋ณ์ ํ์ ์ด ๊ฐ๊ฑฐ๋ ์ํผํ์ ์ธ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ์๋ฌ๋ฅผ ํตํด ๊ฒฝ๊ณ ํ๋ค.
// ์๋ธํ์
// sub1 ํ์
์ sup1 ํ์
์ ์๋ธ ํ์
์ด๋ค.
let sub1: 1 = 1;
let sup: number = sub1;
sub1 = sup1; //err sup ํ์
์ sub์ ๋ฃ์ ์ ์๋ค.
// sub2 ํ์
์ sup2์ ์๋ธ(ํ์)ํ์
์ด๋ค.
let sub2: number[] = [1];
let sup2: object = sub2;
sub2 = sup2; //err
// sub3 ํ์
์ sup3 ํ์
์ ์๋ธ ํ์
์ด๋ค.
let sub3: [number, number] = [1, 2]; // ํํ
let sup3: number[] = sub3; // ๋ฐฐ์ด
sub3 = sup3 // ๋ฐฐ์ด > ํํ
// sub4 ํ์
์ sup4 ํ์
์ ์๋ธ ํ์
์ด๋ค.
let sub4: number = 1;
let sup4: any = sub4;
sub4 = sup4; // any๋ ์๋ฌ๋ฅผ ๋ฐ์์ํค์ง ์๊ณ ๋ค ๋๋ค.
// sub5 ํ์
์ sup5 ํ์
์ ์๋ธ ํ์
์ด๋ค.
let sub5: never = 0 as never;
let sup5: number = sub5;
sub5 = sup5; // never x
class Animal {}
class Dog extends Animal{
eat(){}
}
// sub6 ํ์
์ sup6 ํ์
์ ์๋ธ ํ์
์ด๋ค.
let sub6: Dog = new Dog()
let sup6: Animal = sub6;
sub6 = sup6 // dog์๋ animal์ ํ ๋น ๋ถ๊ฐ eat์ด ์๊ธฐ ๋๋ฌธ์
// 1. ๊ฐ๊ฑฐ๋ ์๋ธํ์
์ธ ๊ฒฝ์ฐ์๋ ํ ๋น์ด ๊ฐ๋ฅํ๋ค -> ๊ณต๋ณ
// 2. ํจ์์ ๋งค๊ฐ๋ณ์ ํ์
๋ง ๊ฐ๊ฑฐ๋ ์ํผํ์
์ธ ๊ฒฝ์ฐ, ํ ๋น์ด ๊ฐ๋ฅํ๋ค. -> ๋ฐ๋ณ - Interface์ ๋น์ทํจ
- primitive, Union Type, Tuple, Function
- ๊ธฐํ ์ง์ ์์ฑํด์ผํ๋ ํ์ ์ ๋ค๋ฅธ ์ด๋ฆ์ ์ง์ ํ ์ ์๋ค.
- ๋ง๋ค์ด์ง ํ์ ์ refer๋ก ์ฌ์ฉํ๋ ๊ฒ์ด์ง ํ์ ์ ๋ง๋๋ ๊ฒ์ ์๋๋ค.
- Aliasing Primitive
- ๋ฑํ ์๋ฏธ ์์
type MyStringType = string;
const str = 'world';
let myStr: MyStringType = 'hello';
myStr = str; // ๋ฑํ ์๋ฏธ ์๋ ๊ฒ- Aliasing Union Type
- ์ ๋์จ ํ์ ์ A๋ ๊ฐ๋ฅํ๊ณ B๋ ๊ฐ๋ฅํ ํ์
- ๊ธธ๊ฒ ์ฐ๋ ๊ฑธ ์งง๊ฒ ํด์ค
let person: string | number = 0;
type StringOrNuber = string | number;
let anoter: StringOrNumber = 0;
another = 'Anna'; - Aliasing Tuple
- ํํ ํ์ ์ ๋ณ์นญ์ ์ค์ ์ฌ๋ฌ๊ตฐ๋ฐ์์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค
let person: [string, number] = ['Mark', 35];
type PersonTuple = [string, number];
let anoter: PersonTuple = ['Anna', 24]; - Aliasing Function
- ๊ธธ๊ฒ ์ฐ๋ ๊ฒ ์งง๊ฒ ํด์ค
type EatType = (food: string) => void; -
Compilation Context ์ผ์ข ์ ํฌ์ํ ์ฉ์ด๋ค. ํ์ ์คํฌ๋ฆฝํธ ํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธํ ์ํค๋๋ฐ ๊ทธ ๊ณผ์ ์์ ํ์ ์คํฌ๋ฆฝํธ์ ์ค์ ์ ๊ฐ๋ฏธํ๋ ๊ฒ์ด๋ค. ์ด๋ค ํ์ผ์ ์ปดํ์ผ ํ ๊ฒ์ธ์ง, ์ ํ ๊ฒ์ธ์ง ์ ํ๋ค. ์ด๋ค ์ปดํ์ผ ์ต์ ์ ์ค์ ํ ๊ฒ์ธ์ง ์ ํ์๋ context tsconfig.json ํ์ผ์ ์ฌ์ฉํ๋ค.
-
compileOnSave
- true/false(default false)
- // ํ์ผ์ ์ธ์ด๋ธํ๋ฉด ์ปดํ์ผ ์ํค๊ฒ ๋ค.
- extends
- tsconfig.json ํ์ผ์ด ๋ค๋ฅธ ํ์ผ์ ์์ ๋ฐ๊ณ ์ฌ์ฉํ ์ ์๋ค.
- "extends": "./extendsBase.json", // ๊ฒฝ๋ก๋ฅผ ์ ์ด์ค
- files, include, exclude
- ์ ๋ค ์ค์ ์ด ์์ผ๋ฉด, ์ ๋ถ ๋ค ์ปดํ์ผ ํ๋ ค๊ณ ํ๋ค.
- files
- ์๋ ํน์ ์ ๋ ๊ฒฝ๋ก์ ๋ฆฌ์คํธ ๋ฐฐ์ด์ด๋ค.
- exclude๋ณด๋ค ์ธ๋ค.
- include, exclude
- globํํด(๋ง์น .gitignore)
- include
- exclude๋ณด๋ค ์ฝํจ
- exclude
- ์ค์ ์ ํ๋ฉด 4๊ฐ์ง๋ฅผ default๋ก ์ ์ธ
- outDir์ ํญ์ ์ ์ธํ๋ค.
- compileOptions
-
typeRoots
-
types
- @types
- ์๋ฌด ์ค์ ์ ํ๋ฉด
- node_modules/@types ๋ผ๋ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ์ฐพ์์ ์ฌ์ฉ
- typeRoots ๋ฅผ ์ฌ์ฉํ๋ฉด
- ๋ฐฐ์ด ์์ ๋ค์ด์๋ ๊ฒฝ๋ก๋ค ์๋์์๋ง ๊ฐ์ ธ์จ๋ค.
- types ๋ฅผ ์ฌ์ฉํ๋ฉด
- ๋ฐฐ์ด ์์ ๋ชจ๋ ํน์ ./node_modules/@types/ ์์ ๋ชจ๋ ์ด๋ฆ์์ ์ฐพ์์จ๋ค.
- [] ๋น ๋ฐฐ์ด์ ๋ฃ์๋ค๋ ๊ฒ์ ์ด ์์คํ ์ ์ด์ฉํ์ง ์๊ฒ ๋ค๋ ๋ป
- typeRoots์ types๋ฅผ ๊ฐ์ด ์ฌ์ฉํ์ง ์๋๋ค.
- ์๋ฌด ์ค์ ์ ํ๋ฉด
- @types
-
target
- ๋น๋์ ๊ฒฐ๊ณผ๋ฌผ์ ์ด๋ค ๋ฒ์ ์ผ๋ก ํ ๊ฒ์ด๋
- ์ง์ ์ ์ ํ๋ฉด es3๋ก ์ง์ ๋จ
-
lib
- ๊ธฐ๋ณธ type definition ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด๋ค ๊ฒ์ ์ฌ์ฉํ ๊ฒ์ด๋
- lib๋ฅผ ์ง์ ํ์ง ์์ ๋,
- target์ด es3์ด๊ณ ๋ํดํธ๋ก lib.d.ts๋ฅผ ์ฌ์ฉ
- target์ด es5์ด๊ณ ๋ํดํธ๋ก dom, es5, scripthost๋ฅผ ์ฌ์ฉ
- target์ด es6์ด๊ณ ๋ํดํธ๋ก dom, es6, dom.iterable, scripthost๋ฅผ ์ฌ์ฉ
- lib๋ฅผ ์ง์ ํ๋ฉด ๊ทธ lib ๋ฐฐ์ด๋ก๋ง ๋ผ์ด๋ธ๋ฌ๋ฅผ ์ฌ์ฉํ๋ค.
- ๋น[] => 'no definition found~'
-
outDir, outFile, rootDir
-
strict(๋ฌด์กฐ๊ฑด ํค๊ณ ์ฌ์ฉํ์) : ์๊ฒฉํ๊ฒ ํ์ ์ ํ์ธํ๋ ์ต์ ์ ์ผ ๋ค.
-
noImplicitAny
- ๋ช ์์ ์ด์ง ์๊ฒ anyํ์ ์ ์ฌ์ฉํ์ฌ, ํํ์๊ณผ ์ ์ธ์ ์ฌ์ฉํ๋ฉด, ์๋ฌ๋ฅผ ๋ฐ์
- ํ์ ์คํฌ๋ฆฝํธ๊ฐ ์ถ๋ก ์ ์คํจํ ๊ฒฝ์ฐ, any๊ฐ ๋ง์ผ๋ฉด any๋ผ๊ณ ์ง์ ํ๋ผ.
- ์๋ฌด๊ฒ๋ ์ฐ์ง ์์ผ๋ฉด, ์๋ฌ๋ฅผ ๋ฐ์
- ์ด ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๋ฉด, any๋ผ๊ณ ์ง์ ๋์ด ์์ง ์์ ๊ฒฝ์ฐ๋ any๊ฐ ์ ๋ง ์๋๊ฑฐ๋ค. ํ์ ์ถ๋ก ์ด ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
-
noImplicitThis
- ๋ช ์์ ์ด์ง ์๊ฒ anyํ์ ์ ์ฌ์ฉํ์ฌ this ํํ์์ ์ฌ์ฉํ๋ฉด ์๋ฌ๋ฅผ ๋ฐ์ํ๋ค.
- ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ฒผ์ ์๋ฆฌ์ this๋ฅผ ๋๊ณ this์ ๋ํ ํ์ ์ ์ด๋ค ๊ฒ์ด๋ผ๋ ํํํ์ง ์์ผ๋ฉด, noImplicitAny๊ฐ ์ค๋ฅ๋ฅผ ๋ฐ์์ํจ๋ค.
- js์์๋ ๋งค๊ฐ๋ณ์์ this๋ฅผ ๋ฃ์ผ๋ฉด ์ด๋ฏธ ์์ฝ๋ ํค์๋๋ผ syntaxerror ๋ฐ์์ํจ๋ค.
- this๋ฅผ any๋ก ๋ช ์์ ์ผ๋ก ์ง์ ํ๋ ๊ฒ์ ํฉ๋ฆฌ์ ์ด๋ค.(๋ฌผ๋ก ๊ตฌ์ฒด์ ์ธ ์ฌ์ฉ์ฒ๊ฐ ์์ผ๋ฉด ํ์ ์ ํํํ๊ธฐ๋ ํ๋ค.)
- this๋ฅผ ์ต๋ํ ์ ํํด์ฃผ๋ ๊ฒ์ด ํ์ ์ ์ผ๋ก๋ ์์ ํ๊ฒ ์ฒ๋ฆฌ๊ฐ ๋ ๊ฒ์ด๋ค.
-
strictNullChecks
- ์ผ์ง ์์ผ๋ฉด
- ๋ชจ๋ ํ์ ์ null, undefined ๊ฐ์ ๊ฐ์ง ์ ์๋ค.
- string์ผ๋ก ํ์ ์ ์ง์ ํด๋ null, undefined ๊ฐ์ ํ ๋นํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
- ์ผ๋ฉด
- ๋ชจ๋ ํ์ ์ null, undefined ๊ฐ์ ๊ฐ์ง ์ ์๊ณ , ๊ฐ์ง๋ ค๋ฉด union type์ ์ด์ฉํด์ ์ง์ ๋ช ์ํด์ผํ๋ค.
- any ํ์ ์ null, undefined๋ฅผ ๊ฐ์ง๋ค.
- strictNullChecks๋ฅผ ์ ์ฉํ์ง ์์ผ๋ฉด null, undefined๋ฅผ ๊ฐ์ง๋ค๋ ๊ฒ์ ์๋ฌต์ ์ผ๋ก ์ธ์ ํ๊ณ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ์ ํํ ์ด๋ค ํ์ ์ด ์ค๋ ์ง๋ฅผ ๊ฐ๋ฐ์๊ฐ ์ค์ค๋ก ๊ฐ๊ณผํ ์ ์๋ค. null, undefined๋ฅผ ๊ฐ์ง ์ ์๋ ๊ฒฝ์ฐ ํด๋น ๊ฐ์ ์กฐ๊ฑด๋ถ๋ก ์ ์ธํ๊ณ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
- ์ฌ์ฉํ๋ ค๋ ํจ์๋ฅผ ์ ์ธํ ๋๋ถํฐ ๋งค๊ฐ๋ณ์์ ๋ฆฌํด ๊ฐ์ ์ ํํ ํ์ ์ ์ง์ ํ๋ ค๋ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์ฌ์ผํ๊ณ , ๊ธฐ์ธ์ด๊ฒ ๋ ๊ฒ์ด๋ค.
- ์ผ์ง ์์ผ๋ฉด
-
strictFunctionTypes
- ํจ์ ํ์ ์ ๋ํ bivariand ๋งค๊ฐ๋ณ์ ๊ฒ์ฌ๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
- ๋ฐํํ์ ์ ๊ณต๋ณ์ ์ด์ด์ผ ํ๊ณ , ์ธ์ํ์ ์ ๋ฐ๊ณต๋ณ์ ์ด์ด์ผ ํ๋ค. ๊ทธ๋ฐ๋ฐ ํ์ ์คํฌ๋ฆฝํธ์์ ์ธ์ํ์ ์ ๊ณต๋ณ์ ์ด๋ฉด์, ๋ฐ๊ณต๋ณ์ ์ธ ๊ฒ์ด ๋ฌธ์ ๋ค.
- ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด strictFunctionTypes -> ์ต์ ์ ์ผ๋ฉด ์๋ฌ๊ฐ ์ ๋๋ ๊ฒ์ ์๋ฌ๊ฐ ์๊ธฐ๊ฒ ํด์ค๋ค.
-
strictPropertyInitialization
- ์ ์๋์ง ์์ ํด๋์ค์ ์์ฑ์ด ์์ฑ์์๊ฒ ์ด๊ธฐํ๋์๋์ง ํ์ธํ๋ค.
- ์ด ์ต์ ์ ์ฌ์ฉํ๋ ค๋ฉด -strictNullChecks๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํด์ผํ๋ค.
-
strictBindCallApply
- bind, call, apply์ ๋ํ ๋ ์๊ฒฉํ ๊ฒ์ฌ ์ํ
-
alwaysStrict
- ๊ฐ ์์ค ํ์ผ์ ๋ํด js์ strict mode๋ก ์ฝ๋๋ฅผ ๋ถ์ํ๊ณ , "์๊ฒฉํ๊ฒ ์ฌ์ฉ"์ ํด์ ํ๋ค.
-