inflearn logo
강의

Khóa học

Chia sẻ kiến thức

TypeScript (TypeScript) được cắt thành từng miếng vừa một miếng ăn

Thu hẹp kiểu dữ liệu

chapter7에서 타입가드가 제대로안되요

Đã giải quyết

628

wjdgksak

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

0

여기 value에서 오류 뜨는게

'string | number | Date | Person' 형식은 'object' 형식에 할당할 수 없습니다.
'string' 형식은 'object' 형식에 할당할 수 없습니다.ts(2322)

 

이렇게 뜨는데 'age' 떄문인것같은데 , 개선방향을 모르겠어요

    if(value && 'age' in value) {
        console.log(`${value.name}은 ${value.age}살 입니다.`)
    }

typescript

Câu trả lời 2

0

wjdgksak

그러면 if문으로 처리하려면 어떻게 해야할까요 ?

1

winterlood

타입 좁히기는 해당 조건문이 참이 되었을때 특정 타입을 보장할 수 있는 경우에만 동작하게 됩니다. 따라서 elseif를 사용하시거나 또는 각 if문 별로 Return을 시켜 앞의 조건문이 참이 되었을 경우 함수를 종료시키는 방법이 있습니다. 또는 switch/case문을 break와 함께 사용하는 방법도 고려해볼 수 있습니다.

 

0

winterlood

안녕하세요 이정환입니다.

혹시 가능하시면 전체 코드를 올려주실 수 있을까요? (chapter7.ts)만 올려주시면 됩니다

0

wjdgksak

/**
 * 타입 좁히기
 * 조건문 등을 이용해 넓은타입에서 좁은타입으로
 * 타입을 상황에 따라 좁히는 방법을 이야기
 */


type Person = {
    name: string;
    age: number;
};

function fuc(value: string | number | Date | null | Person) {
    // 타입가드
    if(typeof value === 'string') {
        console.log(value.toUpperCase());
    }
    if(typeof value === 'number') {
        console.log(value.toFixed());
    }
    // null type도 typeof 출력시 object 겹쳐서 value값을 보장할 수 없음.
    if(value instanceof Date) {
        console.log(value.getTime())
    }
    // if(value && 'age' in value) {
    //     console.log(`${value.name}은 ${value.age}살 입니다.`)
    // }
    
}

여기있습니다

0

winterlood

올려주신 코드 확인해보았습니다

문제는 else if를 사용하지 않아서 그렇습니다.

올려주신 코드에는 if문이 연달아 작성되어 있는데요, 이럴 경우 각 if 조건문 별로 리턴문이 없게 되면 타입 좁히기가 제대로 진행되지 않습니다.

인덱스드 엑세스타입 실무질문

0

26

2

모든 ts파일이 컴파일 되지 않습니다.(해결됨.)

0

99

4

핸드북 light/dark mode 관련 이슈가 있는 것 같습니다.

0

72

1

제네릭 클래스 핸드북 페이지가 undefined라고 나옵니다.

0

77

2

적절한 타입 찾기 React.ChangeEvent<HTMLInputElemen>

0

77

2

outDir 옵션 추가 후 컴파일 오류 질문

0

188

1

호출 시그니처 질문

0

113

2

서로소 유니언 타입이 discriminated union과 동의어 인가요?

0

132

2

조건부타입소개 중 함수오버로딩 활용 시 인수의타입과 함수의 반환값의 타입이 깨지는 문제

0

102

1

할인쿠폰 관련하여

0

230

2

프론트엔드에서의 인터페이스활용

0

143

2

안녕하세요 이정환님!

0

126

1

Node.js 설치에 관한 질문입니다.

0

132

2

함수 타입 호출 시그니처

0

93

1

35강. 모듈 보강은 라이브러리 파일을 직접 편집해야 하나요?

0

99

2

인터페이스 문법이 있는데 타입 별칭 문법은 왜 있나요?

0

154

4

마우스 호버 시 정보

0

135

2

vite으로 리액트 빌드하기를 업데이트해주세요.

1

116

2

타입가드를 만들어 사용하는 이유가 궁금합니다.

0

129

2

섹션 12가 너무 어려운데... 정상이겠죠..?

0

173

2

선생님.. 알고리즘도 강의해주시면안되나요

0

145

2

선생님은 어떻게 이런걸 아세요?

0

166

1

type: module

0

140

2

7:17초 업캐스팅 질문이있습니다!

0

108

1