구조 하위 유형 정보가 손실 될 수 있습니다흐름의 정보 손실은 이러한 종류의 다형성에 내재 된 구조적 하위 유형과 관련되어 있습니까? 흐름
이type O = {x: number, y: number};
type P = {x: number, y: number, z: number}
function f(o: O) {
return o.x * 2, o.y * 2, o;
}
const p: P = {x: 2, y: 3, z: 100};
const r = f(p);
r.z // type error (property not found)
(.. 그것은 눈에 보이는 돌연변이를 수행하기 때문에이 코드는, 끔찍한 그것은 단지 설명을위한 것입니다)
내가 그 행 다형성을 읽었습니다 유형 안전을 위태롭게하지 않으면 서 이러한 정보 손실을 피하기위한 개념입니다.
하위 유형 다형성으로 동일하게 달성 할 수있는 방법이 있습니까?
[편집]
내가 다소 무서운 용어에 대한 간략한 설명이 제공하는 더 많은 관객 해결하려면 다음 두 가지 유형이 동일하면 단지 멋진 단어가 결정하는 것입니다- Polymorpishm을 즉, 강체 형 시스템의 유연성을 향상시킵니다.
- 파라 메트릭 다형성 (제네릭 흐름)은 항상 두 가지 유형이 동등한 유형 않기 때문에 전혀 문제가되지
- 하위 유형 다형성 (흐름의 하위 유형)은 즉 퍼 유형
- 행 다형성에 따라 하위 유형을 포괄, 그들로부터 계층 구조를 도출 할 수있는 경우 두 가지 유형이 동일하다는 것을 말한다은 하위 유형 지정과 유사하지만 정보 손실 문제를 해결합니다 (기술적으로 더 이상 하위 유형 관계가 없으므로 하위 유형 지정이 아닙니다)
- 제한된 다형성은 두 가지 유형이 특정 용도 전용, 예. 평등, 순서, 매핑 오버 등등.
link 왜 내 함수 문제? 그냥 퍼 유형이 예상되는 곳마다 하나의 하위 유형에 전달할 수있는 하위 유형의 약속에 의존합니다. 귀하의 조언은 한정된 다형성을 대신 사용하는 것입니다. 자, 이는 하위 유형 지정이 다른 형태의 다형성보다 열등하다는 것을 의미합니다 - 적어도 특정 경우와 복잡한 알고리즘을 구현하는 데 필요합니다. – ftor
@ftor 나는 당신이 말하는 것을 이해합니다. , 그것은 작동해야하지만, 그것은 작동하는 것처럼 보입니다. 그러나 함수를 사용하면 O 유형의 매개 변수가 아니라 O 유형의 매개 변수를 명시 적으로 찾고 있음을 알게됩니다. 매개 변수가임을 지정하면O 유형 또는 O 유형 인 매개 변수를 예상한다는 것을 컴파일러에 알립니다. Java에서 처리하는 방법을 확인하십시오. https://softwareengineering.stackexchange.com/questions/227918/java-use-polymorphism-or-bounded -type-parameters – kyle
@ftor 이전의 코멘트와 OOP를 설명하지만 흐름의 맥락에서 볼 때 내 업데이트 된 답변을 확인하십시오. – kyle