TypeScript의 오리 유형

WBOY
풀어 주다: 2023-09-11 23:25:06
앞으로
823명이 탐색했습니다.

TypeScript 中的 Duck 类型

덕타이핑이란?

먼저 덕타이핑이 무엇인지 알아야 합니다. 프로그래머에 따르면 객체의 유형이 클래스가 아닌 객체의 동작(예: 메서드 및 속성)에 의해 결정되는 상황을 "오리 타이핑"이라고 합니다.

TypeScript로 타이핑하는 오리

TypeScript의 인터페이스를 사용하면 덕 타이핑이 가능해집니다. 인터페이스란 객체가 속해야 하는 유형을 설명하는 일련의 메서드와 특성을 의미합니다.

예를 들어 인터페이스가 함수를 정의하는 경우 "myFunc()"라는 메서드가 있는 모든 객체는 클래스에 관계없이 특정 유형으로 간주될 수 있습니다. 두 개체가 동일한 동작을 공유하고 상호 교환적으로 사용할 수 있으면 코드 유연성이 향상됩니다.

덕 타이핑은 실제 유형보다는 개체의 방법과 속성을 고려하여 작업에 대한 개체의 적합성을 평가하는 데 중점을 둡니다. 인터페이스는 특정 목적을 위해 개체가 "오리 유형"으로 간주되어야 하는 속성 및 메서드 집합을 설명합니다.

오리형의 장점

덕 타이핑의 주요 이점 중 하나는 코드를 더욱 유연하고 재사용 가능하게 만드는 것입니다. 코드는 특정 유형의 객체뿐만 아니라 필요한 메서드와 속성을 가진 모든 객체에 대해 작동하며 수정 없이 다양한 상황에서 사용할 수 있습니다. 또한 덕 타이핑은 단일 코드 기반 내에서 다양한 유형의 객체를 상호 교환적으로 사용할 수 있도록 하여 코드 재사용을 향상시킵니다.

오리 타이핑의 예는 TypeScript입니다

다음은 TypeScript에서 덕 타이핑을 사용하는 방법에 대한 예입니다 -

객체에 원하는 동작을 나타내는 인터페이스를 정의하세요. 예를 들어 -

으아악

인터페이스를 구현하는 클래스를 만듭니다. 예를 들어 -

으아악

클래스의 인스턴스를 생성하고 인터페이스에서 정의한 유형으로 사용합니다.

으아악

인터페이스도 구현하는 다른 클래스 만들기 -

으아악

새 클래스 인스턴스를 인터페이스에서 정의한 것과 동일한 유형으로 사용하세요.

으아악

보시다시피 MallardDuck과 RubberDuck 클래스 모두 Duck 인터페이스를 구현하고 duck 변수를 두 클래스의 인스턴스에 할당할 수 있습니다. 유형은 클래스에 정의된 동작(메서드 및 속성)이 아닌 인터페이스에 의해 결정됩니다.

또한 TypeScript에서는 typeof 키워드를 사용하여 런타임 시 객체 유형을 확인하고 객체에 예상되는 메서드나 속성이 있는지 여부를 확인할 수 있습니다.

이 예제에서 Bird 및 Plane 클래스는 Fly() 메서드가 필요한 Flyable 인터페이스를 구현합니다. goFly() 함수에서는 두 가지 "오리 타이핑"을 서로 바꿔서 사용할 수 있습니다. 이 함수는 호출할 수 있는 fly() 메서드가 있는 한 전달된 객체의 실제 유형에 대해 신경 쓰지 않습니다.

으아악

컴파일되면 다음 JavaScript 코드가 생성됩니다. -

으아악

출력

위 코드는 다음과 같은 출력을 생성합니다. -

으아악

전반적으로 덕 타이핑은 동일한 메서드와 속성을 갖는 한 다양한 유형의 객체를 상호 교환하여 사용할 수 있도록 하여 TypeScript 코드에서 더 큰 유연성과 재사용성을 제공하는 강력한 프로그래밍 개념입니다. 이 예에서 Driveable 인터페이스인 Car 및 Truck 클래스는 동일한 콘텐츠를 표시합니다.

으아악

컴파일되면 다음 JavaScript 코드가 생성됩니다. -

으아악

출력

위 코드는 다음과 같은 출력을 생성합니다. -

으아악

오리 타이핑의 주요 아이디어는 코드를 특정 개체에 사용하기 위해 작성하는 것이 아니라 필요한 메서드와 속성이 있는 모든 개체에 사용하도록 작성해야 한다는 것입니다. 이렇게 하면 코드를 더욱 유연하고 재사용할 수 있게 되어 코드를 변경하지 않고도 다양한 유형의 개체를 상호 교환적으로 사용할 수 있습니다.

위 내용은 TypeScript의 오리 유형의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!