SW/JavaScript

Typescript의 Type vs Interface : 올바른 선택

얇은생각 2023. 12. 26. 07:30
반응형

Type vs. 인터페이스의 TypeScript 딜레마를 이해하고 성능을 고려하며 프로젝트 요구와 코딩 스타일에 따라 선택합니다.

타이프스크립트 커뮤니티에서는 오래전부터 유형과 인터페이스의 사용에 대해 논의해 왔습니다. 개발자들은 종종 서로 언제 사용할지에 대한 결정과 씨름합니다. 코딩 방식과 프로젝트 요구에 맞는 정보에 입각한 선택을 할 수 있도록 양자의 장점과 단점에 대해 알아보겠습니다.

 

 

Typescript의 Type vs Interface: 올바른 선택

 

 

1단계: 인터페이스가 폭탄입니다

초창기에는 인터페이스가 선호되었습니다. 심지어 타이프스크립트 성능 위키는 인터페이스가 유형보다 더 빠르다고 주장했습니다. 인터페이스는 타이프스크립트 유형 검사기의 속도를 향상시켜 성능이 중요한 프로젝트에 이상적이라고 믿었습니다. 하지만 인터페이스는 주로 객체와 기능을 위해 설계되는 등 한계가 있었습니다.

 

성능 고려 사항

"속도"에 대해 이야기할 때 중요한 것은 코드의 런타임 성능이 아니라 TypeScript 유형 검사기의 효율성을 언급한다는 것입니다. 대규모 프로젝트의 경우 느린 유형 검사기는 개발자들에게 잠재적인 성능 향상을 위해 인터페이스로 밀려나는 중요한 문제가 될 수 있습니다.

 

벤치마킹

이 믿음을 시험하기 위해 천 개의 타입과 천 개의 인터페이스를 비교하는 벤치마크를 수행했습니다. 그 결과는 결론이 나지 않았고, 새로운 통찰력을 드러내며 타이프스크립트 팀과 논의를 시작했습니다.

// Using an interface

interface Point {

  x: number;

  y: number;

}

// Using a type

type Coordinates = {

  x: number;

  y: number;

};

 

 

2단계: 일관성이 핵심

2단계에서는 코딩 일관성만 유지하면 유형과 인터페이스 간의 선택은 중요하지 않다는 다른 관점을 도입했습니다. 이 관점은 객체에 인터페이스를 사용하고 다른 구성물에 유형을 사용하도록 장려하여 TypeScript 커뮤니티에서 논쟁을 불러일으켰습니다.

 

 

인터페이스 상속

인터페이스의 주요 장점 중 하나는 다른 인터페이스에서 상속할 수 있는 기능이며, 이 기능은 유형에서는 쉽게 달성할 수 없습니다.

interface Shape {

  color: string;

}

interface Circle extends Shape {

  radius: number;

}

 

 

3단계: 특정 기능의 필요성

AngularJS의 발명자가 인터페이스에 대한 문제, 특히 추가 속성에 대한 문제에 직면했을 때 예측할 수 없는 행동을 하게 된 전환점이 발생했습니다.

 

선언 병합

인터페이스는 "선언 병합"을 도입했는데, 이는 일부 시나리오에서는 유용한 기능이지만 서로 다른 인터페이스가 동일한 이름과 범위를 공유할 때 복잡성을 추가할 수 있는 기능입니다.

interface Product {

  name: string;

  price: number;

}


interface Product {

  description: string;

}

 

 

결론: 올바른 선택

3단계에서는 인터페이스가 제공하는 기능이 특별히 필요하지 않다면 유형을 사용하는 것이 궁극적인 권장 사항입니다. 유형은 예측 가능성을 제공하며 예상치 못한 행동을 보일 가능성이 적습니다. 중요한 것은 유형과 인터페이스 간에 뚜렷한 성능 차이가 없다는 것입니다.

 

 

요구사항 고려

유형과 인터페이스 사이의 선택은 프로젝트의 고유한 요구 사항과 개인적인 코딩 방식에 부합해야 합니다. 상속이 필요하거나 다른 유형을 확장하고 싶거나 객체 지향 프로그래밍 배경에서 나온 경우에는 인터페이스가 선호될 수 있습니다. 그러나 예측 가능성과 제어가 우선순위라면 유형이 더 적합한 선택입니다.

요약하면, 획일적인 해결책은 존재하지 않습니다. 선택은 프로젝트 요구와 당신이 타이프스크립트의 복잡성에 대해 얼마나 잘 알고 있는지에 따라 결정되어야 합니다.

그래서 다음 번에 타이프스크립트에서 타입 대 인터페이스를 결정할 때 이 개발자의 여정을 기억하세요. 코딩 노력에 가장 적합한 정보에 입각한 선택을 할 수 있도록 안내해 드립니다.

반응형