inflearn logo
강의

Khóa học

Chia sẻ kiến thức

[Renewal] TypeScript All-in-One: Phần 1. Ngữ pháp cơ bản

Phân tích loại Bắt buộc, Bản ghi, Không thể rỗng

선생님 제네릭에 관해서 질문 사항이 있습니다.

Đã giải quyết

489

devleeee

61 câu hỏi đã được viết

0

문자열 또는 숫자를 인자로 받아서
문자열 인자인 경우는 문자열 결합을
숫자 인자인 경우에는 숫자 덧셈을 구현하는 함수를 구현하려고 했습니다. 그런데 아래와 같은 에러가 뜨는데 제 짧은 지식으로는 도대체 이해가 안되서 질문을 남깁니다.

또한, 제네릭 타입의 변수는 type guard를 해줄 방법이 없는건가요?

n1과 n2의 타입은 T & 'string' 또는 T & 'number'으로 추론합니다.

 

스크린샷 2023-02-14 오후 3.39.07.png

typescript

Câu trả lời 3

1

jhlee4997

위와 같이 둘 다 같은 타입으로 바꾸시면 됩니다. 처음에 짤 때 하나씩만 바꿔서 문제가 생겼나 봅니다.
(a | b) & a = (a & a) | (b & a) = a | never = a
이런식으로 연산이 되니까 타입가드는 가능한데요. 연습이 아니라면 굳이 위의 코드를 제네릭으로 짤 필요는 없을 거 같긴 해요

1

jhlee4997

function sum<T extends number | string>(n1: T | null, n2: T | null) {
    if(typeof n1 === 'string' && typeof n2 === 'string') {
        return n1 + n2 
    }
    return
}

0

zerocho

삭제된 글입니다

0

devleeee

그럼 이 경우에는 무조건 오버로딩 밖에 답이 없는건가요??

데코레이터가 현재도 자주 쓰이는 문법인가요?

0

76

2

유틸리티 타입 실제로 구현은 못해도 하나씩 외우면 실무할 때 지장 없겠죠?

0

63

1

매핑 타입은 type에서밖에 안된다고 하네요?

0

63

2

자바에서의 오버로딩과 같은 개념이라고 생각해도 되나요?

0

67

2

filter 함수 반환 타입 네로잉 질문

0

70

2

map<U>(callbackfn: ....) 할때 U는 왜 여기 있는거에요??

0

44

2

ts 컴파일을 위한 type 라벨링 부분

0

44

1

concat 함수 타입 구현 중 질문 있습니다!

0

99

2

filter 메소드 질문

0

52

1

forEach 제네릭 관련 문의

0

59

1

타입 추론 시 가장 넓은 범위로 추론이 되는 건가요?

0

162

1

enum이 javascript로 트랜스파일링될때 사라진다하셨는데요

0

206

1

함수 파라미터 타입 정의 시 ...args: any[]와 ...args: any 의 차이

0

223

1

Flat type에서 ReadonlyArray 타입을 사용하는 이유?

0

157

1

bind type 질문

1

147

1

Lowercase type 관련 질문

0

151

1

key-value 타입 자동추론 질문드립니다

0

264

1

타입스크립트 교과서, p131

0

264

1

타입스크립트 교과서 p122 forEach 메서드 질문

0

231

1

타입스크립트 교과서 p116 , 코드에러남

1

268

1

타입스크립트 교과서 p112 , 코드가 안읽힙니다..

0

264

1

타입스크립트 교과서 p83

1

182

1

타입스크립트교과서 p39 쪽 코드가 이해가 안되요

1

225

1

class 에서 ts의 private vs js의 private field( # )

0

335

1