keyof를 통해 TypeScript 교차를 이해하는 방법
P粉451614834
P粉451614834 2023-09-05 22:37:33
0
1
359

인터페이스 사람 { 이름: 문자열; } 인터페이스 수명 { 생일; 사망: 날짜; } 유형 PersonSpan = 개인 및 수명; type K = keyof PersonSpan; // 유형 K = "출생" | let prop: K = "name" // 좋아요 let obj: PersonSpan = { // 컴파일 오류, 출생 및 사망 속성 누락 이름: "존 스미스" }

keyof를 통해 유형 교차를 이해하려면:

이 객체 인스턴스의 키{ name: "John Smith" }name이며, 이는 PersonSpan의 키와 일치합니다. 즉, "name" | "birth" | "death" 인 경우에는 let prop: "name" |을 실행하는 것이 유효합니다. "출생" | "죽음" = "이름"

객체에 이 세 가지 속성 중 하나가 있으면 유효해야 하는데 왜 여전히 PersonSpan에 할당할 수 있는 모든 속성을 가져야 합니까?

P粉451614834
P粉451614834

모든 응답 (1)
P粉267791326

TypeScript에서 둘 이상의 유형의 교차점을 사용하여 유형을 정의하면 결과 유형은 각 교차점 유형의 모든 속성을 갖게 됩니다. 이 경우 PersonSpan은 Person과 Lifespan의 교차점으로 정의되므로 PersonSpan 유형의 개체는 Person과 Lifespan의 모든 속성을 가져야 합니다. Keyof PersonSpan의 결과가 "name" | "birth" | "death"라고 해도 이는 이러한 속성 중 하나만 가진 객체가 PersonSpan에 유효하다는 의미는 아니며 초기화한 K 유형이 PersonSpan의 결합임을 의미합니다. 속성 이름을 설정하면 PersonSpan 유형의 객체에서 "name" 키, "birth" 또는 "death" 키를 사용하여 이러한 속성에 액세스할 수 있습니다. 이는 찾고 있는 부분 유형일 수도 있으므로 모든 props가 선택 사항이 됩니다

으아악
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!