Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ sumNumber('a', 'b'); // 'ab'
ts는 정적타이핑을 제공함으로써 컴파일 단계에서 타입 검사를 해주기 때문에 js를 사용했을 때 빈번하게 발생하는 타입 에러를 줄일 수 있고, 런타임 에러를 사전에 방지할 수 있어서 안정성이 크게 높아짐.

2. **개발 생산성 향상** <br />
변수와 함수 타입을 추론할 수 있고, 리액트를 사용할떄 어떤 prop을 넘겨야 하는지 매번 확인하지 않아도 바로 볼 수 있어서 개발 생산성이 크기 높아짐.
변수와 함수 타입을 추론할 수 있고, 리액트를 사용할때 어떤 prop을 넘겨야 하는지 매번 확인하지 않아도 바로 볼 수 있어서 개발 생산성이 크기 높아짐.

3. **협업에 유리** <br />
자동완성 기능이나, 기술된 인터페이스를 활용하여 코드를 쉽게 파악할 수 있음.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ function getPetName(pet: Pet) {

getPetName(dog); // ✅
```
이게 가능한 이유는 **dog**객체는 **Pet**인터페이스가 갖고있는 **name**이라는 속성을 갖고 있어서 **pet.name**의 방식으로 name에 접근이 가능하기 떄문임. <br />
이게 가능한 이유는 **dog**객체는 **Pet**인터페이스가 갖고있는 **name**이라는 속성을 갖고 있어서 **pet.name**의 방식으로 name에 접근이 가능하기 때문임. <br />
이런 방식이 바로 `구조적 타이핑`임. 또다른 예시를 보자면

<br />
Expand Down
4 changes: 2 additions & 2 deletions CH02_타입/2.4_객체_타입/seulgi.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ console.log(noticePopup.toString()); // [object Object]

타입스크립트 튜플 타입은 배열과 유사하지만 튜플의 대괄호 내부에는 **선언 시점에 지정해준 타입 값만 할당**할 수 있다.

원소 개수도 타입 선언 시점에 미리 정해진다. 이것은 객체 리터럴에서 선언하지 않은 속성을 할당하거나 선언한 속성을 할당하지 않을 에러가 발생하는 것과 같다.
원소 개수도 타입 선언 시점에 미리 정해진다. 이것은 객체 리터럴에서 선언하지 않은 속성을 할당하거나 선언한 속성을 할당하지 않을 에러가 발생하는 것과 같다.

```ts
const myNames: ["CHU", "SEULGI"] = ["CHU", "SEULGI", "LESLEY"]; // "LESLEY"는 지정할 수 없다.
Expand Down Expand Up @@ -105,7 +105,7 @@ console.log(typeof add); // function
호출 시그니처를 정의하는 방식으로 사용하면 된다. 호출 시그니처는 함수의 매개변수와 반환 값의 타입을 명시하는 역할을 한다.

> **호출 시그니처(Call Signature)?** <br />
> 타입스크립트에서 함수 타입을 정의할 사용하는 문법으로 함수 타입은 해당 함수가 받는 <u>매개변수와 반환하는 값의 타입으로 결정</u>된다.
> 타입스크립트에서 함수 타입을 정의할 사용하는 문법으로 함수 타입은 해당 함수가 받는 <u>매개변수와 반환하는 값의 타입으로 결정</u>된다.

```ts
type add = (a: number, b: number) => number;
Expand Down
2 changes: 1 addition & 1 deletion CH03_고급_타입/3.3_제네릭_사용법/seulgi.md
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ console.log(getNames({})); // Error! Argument of type '{}' is not assignable to

> 위의 코드처럼 제약해버리면 제네릭의 유연성을 잃어버린다.

### 유연성을 잃어버리지 않고, 제약해야 할 떄는 타입 매개변수 + 유니온 타입 상속 선언을 활용하자
### 유연성을 잃어버리지 않고, 제약해야 할 때는 타입 매개변수 + 유니온 타입 상속 선언을 활용하자

```ts
<Key extends string | number>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ function handle(param: Unions) {
}
```

- 해당 코드에서는 판별자가 value일 판별자로 선정한 값 중 "a"만 유일하게 유닛 타입이다.
- 해당 코드에서는 판별자가 value일 판별자로 선정한 값 중 "a"만 유일하게 유닛 타입이다.
- **이때만 유닛 타입을 포함하고 있어 타입이 좁혀진다!**
- 판별자가 answer일 때를 보면 판별자가 모두 유닛 타입이라 타입이 정상적으로 좁혀진다.

Expand Down
Loading