>웹 프론트엔드 >JS 튜토리얼 >TypeScript에서 런타임 인터페이스 유형 검사를 수행하는 방법은 무엇입니까?

TypeScript에서 런타임 인터페이스 유형 검사를 수행하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-16 16:52:03715검색

How to Perform Runtime Interface Type Checking in TypeScript?

TypeScript에서 인터페이스 유형 검사

TypeScript에서는 유형의 변수가 다음을 준수하는지 확인하려고 할 때 일반적인 딜레마가 발생합니다. 런타임에 지정된 인터페이스. 다음 코드를 고려해보세요.

interface A {
    member: string;
}

var a: any = { member: "foobar" };

if (a instanceof A) alert(a.member);

여기서 TypeScript 플레이그라운드는 마지막 줄에서 오류를 생성하여 현재 범위에서 이름 A가 정의되지 않았다고 주장합니다. 그러나 A가 명확하게 정의되어 있으므로 이는 올바르지 않습니다. 이 문제를 해결하려면 생성된 JavaScript에 인터페이스가 표현되지 않으므로 런타임 유형 검사가 불가능하다는 점을 이해하는 것이 중요합니다.

이 딜레마는 인터페이스가 정의된 존재가 없는 JavaScript의 동적 특성에서 비롯됩니다. 결과적으로 질문이 생깁니다. TypeScript에서 인터페이스의 유형을 검사할 수 있는 방법이 있습니까?

플레이어플레이어의 자동 완성 기능은 실제로 Implements라는 메서드를 드러내므로 이를 활용하는 방법이 궁금합니다. 사용자 정의 유형 가드가 작동하는 위치는 다음과 같습니다.

interface A {
    member: string;
}

function instanceOfA(object: any): object is A {
    return 'member' in object;
}

var a: any = { member: "foobar" };

if (instanceOfA(a)) {
    alert(a.member);
}

이 접근 방식을 사용하면 인스턴스화할 필요 없이 인터페이스 유형을 확인할 수 있습니다. 그러나 더 복잡한 경우에는 판별자를 사용하여 자체 판별자를 관리하고 중복이 발생하지 않도록 하는 것이 좋습니다.

위 내용은 TypeScript에서 런타임 인터페이스 유형 검사를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.