openlang

TypeScript에서 속성이 없는 객체를 받으려면?

코드는 이렇습니다.

function inspect(item: { label: string } | {}) {
    if (item.label) { //error
        console.log("inspect jingo");
    }
}

나오는 오류는 The property "label" does not exist in the type "{} | {label: string;}".The property "label" does not exist in the type "{}".

저는 typescript 초보예요. item이 빈 객체나 {label: string}을 받도록 어떻게 선언하나요.

영어에서 번역원문 보기

이어지는 대화 2

서로의 근거를 따라
  1. 고유 링크

    ?를 추가해서 label 속성을 선택 사항으로 만드세요:

    function inspect(item: { label?: string }) {
        if (item.label) {
            console.log("inspect jingo");
        }
    }
    영어에서 번역원문 보기
  2. 고유 링크

    TypeScript에서 좋은 방식인지는 모르겠지만, if 조건 안에서 item이 { label: string } 타입이라고 명시적으로 단언할 수 있습니다:

    function inspect(item: { label: string } | {}) {
        if ((item as {label: string}).label) {
            console.log("inspect jingo");
        }
    }
    영어에서 번역원문 보기

같은 질문의 다른 갈래

  1. 문자열 배열을 값으로 갖는 TypeScript Map 초기화

    각 항목이 문자열 배열을 담는 Map을 만들고 있어요. 타입 선언과 초기화를 한 문장으로 같이 하려면 어떻게 하나요? 제 (단순한) 시도는 이랬어요: 그랬더니 이렇게 나와요:

    답글 2최근 활동 typescript
  2. Typescript 호출 가능 타입의 계약

    Typescript는 함수 정의가 인터페이스 시그니처와 다른데도 받아 주면서, 왜 그 함수를 실제로 호출할 때는 문제를 보고하나요.

    답글 2최근 활동 typescript
  3. Solidity에서 address를 uint256으로 변환할 때 실패해요

    struct를 담은 배열을 만들고, 그 배열에서 각 계정의 값을 얻으려고 했어요. 그런데 msg.sender를 담은 address 변수를 그 배열에 전달하니 타입이 uint256으로 변환되지 않는 듯해서 실패했어요. 어떻게…

    답글 3최근 활동 solidity