Typescript에서 오버로딩과 오버라이딩
우세하다
재정의는 하위 클래스의 메서드 동작을 변경하기 위해 수행하는 작업입니다. 메서드를 재정의할 때 부모 클래스에서 상속된 메서드의 기본 동작을 변경할 것으로 예상됩니다. 그러나 메서드 시그니처는 위반하지 않기 위해 동일하게 유지되어야 합니다LSP.
초과 적재
과부하는 함수에 수행하는 작업입니다. 그들의 행동*을 바꾸는 것이 아니라 그들의 signature을 다양화하기 위해서입니다. 함수 오버로드는 함수와 동일한 이름을 유지하지만 자유롭게 다른 서명을 도입할 수 있습니다. JavaScript 배경에서 왔으며 두 개 이상의 유형 중 하나일 수 있는 매개 변수가 있는 것을 본 경우functions에 대한 예를 본 적이 있을 것입니다.
/**
* @param {string|string[]} The object to use
*/
function stringOrArray(strOrArr) {
...
}
JavaScript에는 오버로드를 명확하게 할 만큼 충분히 강력한 유형 시스템이 없기 때문에 이것이 함수 오버로드라고 말하기는 어렵습니다. 그러나 Jsdoc 주석을 통해 이 함수에 과부하가 있음을 알 수 있습니다.
TypeScript를 사용하면 이 오버로드를 주석에 사는 대신 함수 서명의 실제 부분으로 만들 수 있습니다.
전.
function stringOrArray(str: string)
function stringOrArray(arr: string[])
function stringOrArray(strOrArr: string | string[]) {
...
}
결론
오버로드된 함수의 구현은 동일하게 유지되지만 서명은 다를 수 있습니다. 재정의의 경우 구현은 다를 수 있지만 Liskov 대체 원칙을 위반하지 않으려면 서명이 동일해야 합니다.
Reference
이 문제에 관하여(Typescript에서 오버로딩과 오버라이딩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/smac89/overloading-vs-overriding-in-typescript-16cl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)