inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] 타입스크립트 올인원 : Part1. 기본 문법편

filter 타입 직접 만들기

filter 질문 있습니다.

해결된 질문

385

이종민

작성한 질문수 61

0

기존 배열 함수를 사용할 때는 filter 메서드의 인자로 v is string을 넣어주지 않아도 작동되는데 선생님께서 정의하신 filter 메서드의 경우는 callback에 v is string을 넣어줘야만 작동되는지 궁금합니다.

기존의 filter

const d = [1, 2, '3', 4, '5'];
d.filter((value) => typeof value === 'string');

 

수업 시간에 작성한 filter

 interface Arr<T> {
   forEach(callback: (value: T, index: number) => void): void;
   // map(callback: (value: T, index: number) => any): any[];
   map<U>(callback: (value: T, index: number) => U): U[];
   filter<S extends T>(callback: (value: T, index: number) => value is S): S[];
 }
const c: Arr<string | number> = ['1', 2, '3', 4, '5'];
const d = c.filter((item): item is string => typeof item === 'string');

typescript

답변 1

1

이종민

공부해서 유추해본 결과

저희가 작성한 필터링 방식은 custom type guard를 썼기 때문에 is를 명시해줘야 하지만

d.ts 파일을 보니 아래와 같은 코드가 있었네요. 때문에 명시적으로 custom type guard를 명시적으로 쓰지 않아도 unknown으로 처리되도록 되어 있는 것 같습니다.

 filter(predicate: (value: T, index: number, array: T[]) => unknown, thisArg?: any): T[];

혹시 이렇게 구현되었기 때문에 기존의 filter 함수는 custom typeguard를 쓰지 않아도 되는게 맞는 걸까요?

0

제로초(조현영)

네 다만 기존 배열도 is를 안 쓰면 타입 추론이 제대로 안 됩니다. 한 번 해보세요.

0

이종민

오 감사합니다 선생님 새로운걸 알아가네요!

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

0

78

2

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

0

65

1

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

0

65

2

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

0

69

2

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

0

73

2

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

0

47

2

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

0

46

1

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

0

100

2

filter 메소드 질문

0

53

1

forEach 제네릭 관련 문의

0

60

1

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

0

164

1

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

0

207

1

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

0

223

1

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

0

157

1

bind type 질문

1

149

1

Lowercase type 관련 질문

0

152

1

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

0

266

1

타입스크립트 교과서, p131

0

265

1

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

0

231

1

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

1

269

1

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

0

265

1

타입스크립트 교과서 p83

1

184

1

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

1

227

1

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

0

338

1