TypeScript 13

[TypeScript] Never

함수 return 값에 붙일 수 있는 타입으로, 1. return 값이 없어야 하고, 2. 함수 실행이 끝나지 않아야 한다(=endpoint가 없어야 한다) function func() :never{ while ( true ) { console.log(123) } } //or function func() :never{ throw new Error('에러메세지') } * while 은 소괄호의 조건식이 true일 경우 계속 내부 코드를 실행한다 👉 무한 실행 * throw new Error( )는 강제로 에러를 발생시킨다 함수 내부에서 코드 실행이 끝나는 함수는 never를 붙일 수 없다 function func(){ console.log(123) } * 모든 함수는 return undefined 를 가지..

TypeScript 2022.03.03

[TypeScript] Narrowing ++

*narrowing은 모호한 타입(union type)을 가지고 있을 때, 추가적인 타입 체크를 이용해 타입을 작은 범위로 좁혀주는 것을 뜻한다 function sum(x :number | string) { if(typeof x === 'string') { return x + '1' } else { return x + 1 } } sum(123) narrowing 할 때 주로 typeof를 사용하는데, 이것으로 부족할 경우가 생기게 된다 1. && 연산자 사용 undefined 또는 null 타입 체크 시 typeof를 사용하면 코드가 길어지는데, function func(x: string | undefined) { if(typeof x === 'string') { } else { } } && 연산자를 사..

TypeScript 2022.03.03

[TypeScript] Rest, Destructuring Type

1. rest 파라미터 타입 지정 : rest 파라미터는 항상 array 안에 담겨오기 때문에, 타입도 array와 똑같이 지정 해주면 된다 ...a: number[ ] ...a: (number | string)[ ] function num(...a: number[]) { 👈 console.log(a); } num(1,5,3,5,6,6) //string, number 타입을 동시에 지정하고 싶을 때는 Union type 사용 function num(...a: (number | string)[]) { 👈 console.log(a); } num(1,5,3,5,6,'안녕') ✅ rest는 spread와 다르다 ...spread는 array, object 자료 왼쪽에, ...rest는 함수 선언시 소괄호 안에서..

TypeScript 2022.02.25

[TypeScript] Strict, HTML 조작할 때 주의점

✅ tsconfing.json 에서 엄격한 유형 검사 설정하기 { "compilerOptions": { "target": "es5", "module": "commonjs", "strict": true 👈 //모든 엄격한 유형 검사 옵션 활성화 } } *엄격한 유형 검사 옵션 "noImplicitAny": true //명시적이지 않은 'any' 유형으로 표현식 및 선언 사용 시 오류 발생 "strictNullChecks": true //엄격한 null 검사 사용 "strictFunctionTypes": true //엄격한 함수 유형 검사 사용 "strictBindCallApply": true //엄격한 'bind', 'call', 'apply' 함수 메서드 사용 "strictPropertyInitializ..

TypeScript 2022.02.19

[TypeScript] Function, Method alias Types

1. function alias types 함수 타입도 type alias로 저장해서 쓸 수 있다 : 화살표 함수를 사용해야 한다 type 변수명 = (파라미터 타입) => 타입 type Func = (x: string) => number 함수 type alias를 사용하려면 함수 표현식을 사용해야 한다 *함수선언식으로는 alias를 사용할 수 없다 ❌ function func: Func () {} //함수 선언식으로는 alias를 사용할 수 없고, //표현식을 통해서만 가능하다 ⭕ let func: Func = function (x) { return 10 } 2. method alias types 📌 object 에도 함수가 들어갈 수 있다 let member = { name: 'choi', plus(..

TypeScript 2022.02.18

[TypeScript] Literal Type

특정 글자나 숫자 같은 정확한 값을 지정할 수 있다 더 엄격한 타입 지정이 가능하다 // let last: string let last: 'choi' "a에는 choi 만 들어올 수 있다" 라는 뜻이다 let last: 'choi' last = 'kim' //에러 발생 📌 리터럴 타입의 자동 완성 기능 함수에서 강점을 보이는데, function hi(a: 'hello'): 1 | 0{ return 1 } hi('hello') 지정 값만 파라미터로 넣을 수 있고, 지정 값만 return 할 수 있게 해 준다 🟥 문제점 let member = { name: 'kim' } function mem(x: 'kim') { } mem(member.name) //에러 발생 member.name은 string타입이고, ..

TypeScript 2022.02.17

[TypeScript] Type Alias, readonly, extend

1. Type Alias 복잡한 타입을 간단하게, 재사용하기 위해 타입을 변수에 담는 것을 뜻한다 type 변수명 = 타입 type A = string | number | undefined 👈 let a: A //object의 경우, 자주 활용된다 type Member = { name : string, age : number } 👈 let member: Member = {name: 'kim', age: 20} ✅ 타입 변수 명은 대문자로 시작해야 한다(일반 변수와 차별을 두기 위해) 2. readonly 특정 속성을 변경할 수 없게 한다 type Myname = { readonly name: string 👈 } const myname: Myname = { name : 'sung2' } myname.nam..

TypeScript 2022.02.16

[TypeScript] Narrowing, Assertion

유니온 타입은 새로운 타입을 만드는 것이기 때문에 수학 연산이 불가능하다 function sum(x :number | string) { return x + 1 } sum(123) //에러 발생 string + 1(가능) number + 1(가능) string | number + 1(불가능) 에러가 나지 않게 하기 위해서는 1. Narrowing을 해주거나, 2. Assert를 해주면 된다 1. Narrowing 애매한 타입(union type)을 가지고 있을 때, 추가적인 타입 체크나 할당을 이용해 변수의 타입을 작은 범위로 좁혀주는 것(정해주는 것)을 뜻한다 타입이 확실하지 않을 때 생기는 부작용을 막기 위한 장치 function sum(x :number | string) { if(typeof x ==..

TypeScript 2022.02.16

[TypeScript] 함수 타입 지정 + void

함수는 두 군데 타입 지정이 가능하다 함수명(파라미터: 타입): 타입 function multi(x: number) :number { return x * 2 } multi(3) multi('3') //에러 발생 - 파라미터에 타입을 지정하면 필수 파라미터가 된다 function multi(x: number) :number { return x * 2 } multi() //에러 발생 파라미터를 선택 사항으로 두고 싶을 경우에는 파리미터?: 타입을 사용한다 function multi(x?: number) :number { return x * 2 } multi() ✅ ? 의 정확한 뜻은 | undefined와 같다 x?: number = x: number | undefined void Type : return할..

TypeScript 2022.02.15