제네릭 형식 함수의 'something'형식에 속성이 없습니다.

하 피즈 테 무리

phone존재 여부를 확인할 때 작동하지 않는 이유 . TypeScript는이를 포착하고 phone존재 하는지 알고 있어야하며 AddressWithPhone인터페이스 여야합니다 .

너무 길어서 유형을 올바르게 정의하지 않았을 것입니다.

interface Address {
    street: string;
    zip: string;
    state: string;
    city: string;
}

interface AddressWithPhone extends Address {
    phone: string;
}


interface EditAddressProps<T = Address | AddressWithPhone> {
    address: T;
    onChange: (address: T) => unknown;
}

const something = <T,>(props: EditAddressProps<T>): string => {
    // Error: Property 'phone' does not exist on type 'T'
    if (props.address.phone) {
        return 'Its AddressWithPhone';
    }
    return 'Its Address without phone';
}

TS 운동장 :

https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgIIBN1QgZx8gbwChlTkcxsIwAucy0AcwG4SyAvYABzoqidZl6cSLwYgWbUgmBgAnmP4TWAXyJFQkWIhQYsuHAHVZACwAKJgPYgUEAB6QQ6fHux5CU5Fys3FAomrqmtDwSMgAouiyrgZmUJZcOAA8ACrIALxomG74AD5Z+njGYOY+EAB8HkJw2QZ0KYJk1gDCJnASEHQAFDWFOPUAlBmVAK4gANYglgDuIKrqCNYU5JYAttQmTBnIqQA05V1c8Yl0kdG1eHEJySnlA34Sw1VkwDDIh8c4AHS9OV-e1ggQ2IQiE2DAIygIGQAHIAJJgFwXIymCyAmGNUhqMHUSHQ+GIgo5ZDTUyWEZgLxlDEBIhAA

귀여운 paiste

당신이 <T = Address | AddressWithPhone>때 당신은 T조합 의 기본값을 설정하고 Address | AddressWithPhone있습니다. 실제로 가능한 값을 제한하지 않았 T으므로 T여전히 아무것도 될 수 있습니다.

extends의 가능한 값을 제한하는 데 사용하려고합니다 T. phone정의되지 않았기 때문에 여전히 공용체에서 완벽하게 작동하지 않으며 Address속성에 액세스하려면 공용체의 모든 멤버에서 속성을 정의해야합니다. Address필수 및 phone선택 속성의 모든 속성이있는 기본 유형이 필요합니다 . 이를 정의하는 방법에는 여러 가지가 있지만 여기에 하나가 있습니다.

type BaseAddress = Address & Partial<AddressWithPhone>
const something = <T extends BaseAddress>(props: EditAddressProps<T>): string => {

놀이터 링크

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C # 제네릭 형식의 다형성

분류에서Dev

C #의 함수에서 제네릭 형식의 속성에 액세스

분류에서Dev

제네릭이 아닌 메서드 'ControllerBase.Ok ()'는 형식 인수와 함께 사용할 수 없습니다.

분류에서Dev

제네릭 형식 코드 (bracy flavoured)에 형식 매개 변수에 대한 명명 규칙이 있습니까?

분류에서Dev

제네릭 메서드에서 형식 인수로 사용중인 클래스의 기본 클래스 속성에 액세스 할 수 없습니다.

분류에서Dev

제네릭 요소에 대한 반복기에서 제네릭 형식을 빌드 할 수 없습니다.

분류에서Dev

C #의 이중 제네릭 형식

분류에서Dev

제네릭 형식을 형식 집합의 구성원으로 제한하는 방법이 있습니까?

분류에서Dev

식에 사용할 제네릭 유형의 속성 유형 가져 오기

분류에서Dev

제네릭 형식에 대해 DataContractResolver.ResolveName의 typeName에 이상한 문자열이 추가되었습니다.

분류에서Dev

Blazor에서 제네릭 형식 제약이 가능합니까?

분류에서Dev

한 제네릭 형식이 다른 제네릭 형식에서 상속되도록하는 F # 제네릭 제약 조건

분류에서Dev

제네릭으로 사용할 경우 Nullable 열거 형 형식을 null에 할당 할 수 없습니다.

분류에서Dev

제네릭 형식에서 VHDL 이미지 특성을 호출 할 수 있습니까?

분류에서Dev

제네릭 유형의 인수없이 제네릭 함수를 정의하는 방법은 무엇입니까?

분류에서Dev

제네릭 형식의 생성자를 호출 하시겠습니까?

분류에서Dev

제네릭 형식을 반환하는 함수 상속

분류에서Dev

제네릭 형식의 구조체에 대해 fmt :: Display를 구현할 수 없습니다.

분류에서Dev

클래스 상속 및 제네릭 형식 상속이있는 C # 컬렉션은 상속 된 클래스를 추가 할 수 없습니다.

분류에서Dev

제네릭 함수의 제네릭 형식의 HashSet에서 HashSet <T> 반환

분류에서Dev

파생 형식을 기본 제네릭 형식으로 암시 적으로 변환 할 수 없습니다.

분류에서Dev

파생 된 형식 참조에서 제네릭 형식을 정의 할 수 있습니까?

분류에서Dev

운영자는 '+'경계 제네릭 형식에 대해, 'T' 'T'에 적용 할 수 없습니다

분류에서Dev

자바 - 말했다 유형의 소비자에게지도 제네릭 형식

분류에서Dev

제네릭이 아닌 메서드 'HttpClient.GetAsync (string)'은 형식 인수와 함께 사용할 수 없습니다.

분류에서Dev

F #에서 매개 변수 형식을 제네릭으로 유지하는 방법이 있습니까?

분류에서Dev

컴파일러는 래핑 된 제네릭 IEnumerable에서 형식을 유추 할 수 없습니다.

분류에서Dev

제네릭 형식 변수에 지역 형식 유추 및 contravariance

분류에서Dev

왜 Mockito는 코 틀린에 숫자 형식의 제네릭 매개 변수 유형을 조롱 수없는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    C # 제네릭 형식의 다형성

  2. 2

    C #의 함수에서 제네릭 형식의 속성에 액세스

  3. 3

    제네릭이 아닌 메서드 'ControllerBase.Ok ()'는 형식 인수와 함께 사용할 수 없습니다.

  4. 4

    제네릭 형식 코드 (bracy flavoured)에 형식 매개 변수에 대한 명명 규칙이 있습니까?

  5. 5

    제네릭 메서드에서 형식 인수로 사용중인 클래스의 기본 클래스 속성에 액세스 할 수 없습니다.

  6. 6

    제네릭 요소에 대한 반복기에서 제네릭 형식을 빌드 할 수 없습니다.

  7. 7

    C #의 이중 제네릭 형식

  8. 8

    제네릭 형식을 형식 집합의 구성원으로 제한하는 방법이 있습니까?

  9. 9

    식에 사용할 제네릭 유형의 속성 유형 가져 오기

  10. 10

    제네릭 형식에 대해 DataContractResolver.ResolveName의 typeName에 이상한 문자열이 추가되었습니다.

  11. 11

    Blazor에서 제네릭 형식 제약이 가능합니까?

  12. 12

    한 제네릭 형식이 다른 제네릭 형식에서 상속되도록하는 F # 제네릭 제약 조건

  13. 13

    제네릭으로 사용할 경우 Nullable 열거 형 형식을 null에 할당 할 수 없습니다.

  14. 14

    제네릭 형식에서 VHDL 이미지 특성을 호출 할 수 있습니까?

  15. 15

    제네릭 유형의 인수없이 제네릭 함수를 정의하는 방법은 무엇입니까?

  16. 16

    제네릭 형식의 생성자를 호출 하시겠습니까?

  17. 17

    제네릭 형식을 반환하는 함수 상속

  18. 18

    제네릭 형식의 구조체에 대해 fmt :: Display를 구현할 수 없습니다.

  19. 19

    클래스 상속 및 제네릭 형식 상속이있는 C # 컬렉션은 상속 된 클래스를 추가 할 수 없습니다.

  20. 20

    제네릭 함수의 제네릭 형식의 HashSet에서 HashSet <T> 반환

  21. 21

    파생 형식을 기본 제네릭 형식으로 암시 적으로 변환 할 수 없습니다.

  22. 22

    파생 된 형식 참조에서 제네릭 형식을 정의 할 수 있습니까?

  23. 23

    운영자는 '+'경계 제네릭 형식에 대해, 'T' 'T'에 적용 할 수 없습니다

  24. 24

    자바 - 말했다 유형의 소비자에게지도 제네릭 형식

  25. 25

    제네릭이 아닌 메서드 'HttpClient.GetAsync (string)'은 형식 인수와 함께 사용할 수 없습니다.

  26. 26

    F #에서 매개 변수 형식을 제네릭으로 유지하는 방법이 있습니까?

  27. 27

    컴파일러는 래핑 된 제네릭 IEnumerable에서 형식을 유추 할 수 없습니다.

  28. 28

    제네릭 형식 변수에 지역 형식 유추 및 contravariance

  29. 29

    왜 Mockito는 코 틀린에 숫자 형식의 제네릭 매개 변수 유형을 조롱 수없는 이유는 무엇입니까?

뜨겁다태그

보관