FP와 OOP 혼합
4789 단어 oopfunctionaljavascriptcode
예를 들어, 여전히 클래스를 사용한 다음 클래스 인스턴스를 함수에 전달할 수 있습니다.
아래에는 단순화된 코드 예제가 있습니다. 사전/연관 배열 또는 개체 인스턴스를 허용하는 일반 함수가 있습니다.
function getAge(obj) {
return obj.age
}
foo = new Car(name="Toyota", age=20)
getAge(foo)
// 20
bazz = { name: "Monster Truck", age: 5 }
cars = [foo, bar, bazz]
ages = cars.map(getAge)
// [ 20, 10, 5 ]
함수는 예상 필드가 있는 한 유형 클래스가 무엇인지 신경 쓰지 않습니다. 그리고 TypeScript에서
type
또는 interface
를 사용하여 컴파일 타임에 이를 적용할 수 있습니다.아마도 모든 메소드를 모듈의 함수로 이동할 수 있습니다. 클래스를 사용하여 데이터를 보유하고 메서드가 없는 경우에는 더 적합한 다른 객체 유형을 고려하십시오.
사전/연관 배열과 같습니다. TypeScript 또는 Python( Mypy 사용)에서 유형을 사용하여 이를 적용할 수 있습니다. Mypy를 Python 프로젝트에 적용하는 방법에 대한 지침이 있습니다here.
Python에서는 변경할 수 없는
namedtuple
를 사용할 수 있으며 문자열 키를 사용하는 대신 속성을 가져오는 클래스 스타일 구문을 사용할 수 있습니다.example을 기반으로 합니다. PY3 문서의 namedtuple도 참조하십시오.
import collections
Person = collections.namedtuple('Person', 'name age gender')
bob = Person(name='Bob', age=30, gender='male')
bob.gender
# 'male'
또는 Python 3.7에서 dataclass 을 사용하십시오. 이것은 유형을 적용하지 않습니다. 이를 확인하려면 여전히 Mypy가 필요합니다.
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
p = Point(1, 2)
Reference
이 문제에 관하여(FP와 OOP 혼합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/michaelcurrin/mixing-fp-and-oop-2pni텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)