Typescript - 팁 및 요령 - Type Guard
7790 단어 typescriptwebdev
사례를 보여드리겠습니다
type Square = {
size: number;
};
type Rectangle = {
with: number;
height: number;
};
type Circle = {
radius: number;
};
type Shape = Square | Rectangle | Circle;
const area = (shape: Shape) => {
if ("size" in shape) return shape.size * shape.size;
if ("with" in shape) return shape.with * shape.height;
if ("radius" in shape) return shape.radius * 2 * Math.PI;
};
이 경우 영역 방법에서 올바른 결과를 반환하려면 모양의 유형을 감지해야 합니다.
여기서 우리는 if 조건에서 모양의 유형을 감지하지만 typescript를 사용하면 유형이 특정 유형인지 여부를 식별하는 특수 함수를 만들 수 있습니다.
이러한 함수는 컴파일러, 인텔리센스 및 우리가 개체의 올바른 유형을 이해하는 데 도움이 되는 Type Guard를 갖도록 만들어졌습니다.
이 함수가 실제로 작동하는지 보여주기 위해 이전 예제를 이런 식으로 다시 작성할 수 있습니다.
Square = {
size: number;
};
type Rectangle = {
with: number;
height: number;
};
type Circle = {
radius: number;
};
type Shape = Square | Rectangle | Circle;
function isSquare(shape: Shape): shape is Square {
return "size" in shape;
}
function isRectangle(shape: Shape): shape is Rectangle {
return "with" in shape;
}
function isCircle(shape: Shape): shape is Circle {
return "radius" in shape;
}
const area = (shape: Shape) => {
if (isSquare(shape)) return shape.size * shape.size;
if (isRectangle(shape)) return shape.with * shape.height;
if (isCircle(shape)) return shape.radius * 2 * Math.PI;
};
보시다시피 isSquare, isRectangle 및 isCircle 메서드는 매개변수로 모양을 가져오고 부울 값을 반환합니다. 결과가 true이면 shape 매개변수는 is 키워드 오른쪽에 표시된 유형에 해당하고, 그렇지 않으면 다른 유형에 해당합니다.
이 기능이 나중에 도움이 되고 코드 가독성이 향상되기를 바랍니다.
다 가이!
곧 봐요!
Reference
이 문제에 관하여(Typescript - 팁 및 요령 - Type Guard), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/this-is-learning/typescript-tips-tricks-type-guard-50e5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)