웹 프론트엔드 JS 튜토리얼 TypeScript의 강력한 기능을 \'const\'로 활용하기: 알아야 할 과소평가된 기능

TypeScript의 강력한 기능을 \'const\'로 활용하기: 알아야 할 과소평가된 기능

Jul 20, 2024 am 07:26 AM

Unlocking the Power of TypeScript

TypeScript에서 가장 과소평가된 기능을 논의할 때 종종 주목받지 못하는 기능은 as const 주장입니다. 이 기능은 다양한 시나리오에서 매우 유용하며 개발자에게 상당한 이점을 제공합니다.

'const'로 이해하기

시작하려면 const가 수행하는 작업을 정의해 보겠습니다. 다음과 같은 객체가 있다고 상상해 보세요.

const routes = {
  home: "/home",
  profile: "/profile",
  notifications: "/notification",
};
로그인 후 복사

경로 속성 위로 마우스를 가져가면 해당 경로가 문자열로 입력된 것을 확인할 수 있습니다. 예를 들어, Routes.home은 "/home"이 아닌 문자열로 입력됩니다. 이는 TypeScript가 이러한 속성이 변경될 수 있다고 가정하여 이를 변경 가능한 문자열로 추론하기 때문입니다.

이제 이러한 특정 경로만 허용하는 함수를 생각해 보세요. 다음과 같이 유형을 정의할 수 있습니다.

function changeRoute(route: "home" | "profile" | "notifications") {
  // navigate to route
}
로그인 후 복사

이 접근 방식은 효과적이지만 반복적이고 오류가 발생하기 쉽습니다. 새 경로를 추가하는 경우 함수의 유형 정의를 업데이트해야 하는데 이는 이상적이지 않습니다.

객체를 불변으로 만들기

여기서 const가 적용됩니다. const를 사용하면 객체를 불변으로 만들 수 있으며 TypeScript는 문자열 대신 리터럴 유형을 추론합니다.

const routes = {
  home: "/home",
  profile: "/profile",
  notifications: "/notification",
} as const;
로그인 후 복사

이제 Routes.home은 "/home"으로, Routes.notifications는 "/notifications"로 입력됩니다. 이러한 불변성은 이러한 속성을 변경할 수 없도록 보장하며 TypeScript는 해당 속성의 특정 값을 인식합니다.

실제 사용 사례

const를 함수에 통합해 보겠습니다.

function changeRoute(route: typeof routes[keyof typeof routes]) {
  // navigate to route
}
로그인 후 복사

여기서 typeof 경로는 경로 객체의 유형을 가져오고, keyof typeof 경로는 키를 추출하여 경로 값의 정확한 유형을 얻습니다. 이를 통해 반복적인 업데이트 없이 경로 개체의 모든 변경 사항에 기능을 적용할 수 있습니다.

유형 추출

as const의 또 다른 강력한 측면은 유형 추출을 가능하게 하는 방법입니다. 예를 들면 다음과 같습니다.

type Routes = (typeof routes)[keyof typeof routes];
로그인 후 복사

이러한 유형의 정의는 경로 객체의 값을 동적으로 추출하여 기능을 더욱 유지 관리하기 쉽게 만들고 중복성을 줄입니다.

결론

TypeScript의 as const 어설션은 유형 안전성을 크게 향상시키고 코드의 중복성을 줄일 수 있는 다재다능하고 강력한 기능입니다. 객체를 불변으로 만들고 정확한 유형 추론을 가능하게 함으로써 코드베이스 유지 및 확장을 단순화합니다. 한번 사용해 보시면 TypeScript 프로젝트가 어떻게 향상되는지 확인하실 수 있습니다!
즐거운 코딩하세요!

[공개: 이 기사는 표현력 향상을 위해 ChatGPT의 도움을 받아 내 아이디어를 결합한 공동 작업입니다.]

위 내용은 TypeScript의 강력한 기능을 \'const\'로 활용하기: 알아야 할 과소평가된 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

JavaScript로 문자열 문자를 교체하십시오 JavaScript로 문자열 문자를 교체하십시오 Mar 11, 2025 am 12:07 AM

JavaScript로 문자열 문자를 교체하십시오

jQuery 날짜가 유효한지 확인하십시오 jQuery 날짜가 유효한지 확인하십시오 Mar 01, 2025 am 08:51 AM

jQuery 날짜가 유효한지 확인하십시오

jQuery는 요소 패딩/마진을 얻습니다 jQuery는 요소 패딩/마진을 얻습니다 Mar 01, 2025 am 08:53 AM

jQuery는 요소 패딩/마진을 얻습니다

10 JQuery Accordions 탭 10 JQuery Accordions 탭 Mar 01, 2025 am 01:34 AM

10 JQuery Accordions 탭

10 JQuery 플러그인을 확인할 가치가 있습니다 10 JQuery 플러그인을 확인할 가치가 있습니다 Mar 01, 2025 am 01:29 AM

10 JQuery 플러그인을 확인할 가치가 있습니다

노드 및 HTTP 콘솔로 HTTP 디버깅 노드 및 HTTP 콘솔로 HTTP 디버깅 Mar 01, 2025 am 01:37 AM

노드 및 HTTP 콘솔로 HTTP 디버깅

jQuery div에 스크롤 바를 추가합니다 jQuery div에 스크롤 바를 추가합니다 Mar 01, 2025 am 01:30 AM

jQuery div에 스크롤 바를 추가합니다

사용자 정의 Google 검색 API 설정 자습서 사용자 정의 Google 검색 API 설정 자습서 Mar 04, 2025 am 01:06 AM

사용자 정의 Google 검색 API 설정 자습서

See all articles