>웹 프론트엔드 >JS 튜토리얼 >TypeScript의 &#any&#, &#unknown&# 및 &#never&# 이해

TypeScript의 &#any&#, &#unknown&# 및 &#never&# 이해

王林
王林원래의
2024-07-16 12:24:481012검색

Understanding

TypeScript는 강력한 유형 시스템을 제공하지만 특정 유형(즉, 임의, 알 수 없음, 전혀 없음)은 혼란스러울 수 있습니다. 더 나은 이해를 위해 분류해 보겠습니다.

모든 유형

any 유형은 세 가지 유형 중 가장 단순합니다. 기본적으로 유형 검사를 비활성화하여 변수가 모든 유형의 값을 보유할 수 있도록 합니다. 예:

let value: any;
value = 42;             // number
value = "Hello";        // string
value = [1, 2, 3];      // array
value = () => {};       // function
value = { key: "val" }; // object
value = new Date();     // date

이 모든 경우에 TypeScript는 오류를 발생시키지 않으므로 유형 제약 없이 변수에 대한 작업을 수행할 수 있습니다. 이는 JavaScript 프로젝트를 TypeScript로 마이그레이션할 때 유용할 수 있습니다. 그러나 any에 의존하면 형식 안전성의 이점이 무효화되므로 대부분의 경우 잘못된 선택이 됩니다. 대신에 알 수 없음을 사용해 보세요.

알 수 없는 유형

알 수 없는 유형은 작업을 수행하기 전에 유형 확인이 필요하므로 그 어떤 것보다 안전합니다. 가능한 모든 값의 집합을 나타내지만 유형 안전성이 적용됩니다.

let value: unknown;
value = 42;
value = "Hello";

// To perform operations, we need to narrow down the type
if (typeof value === "number") {
  console.log(value + 1); // TypeScript knows value is a number here
}

Unknown을 사용하면 작업을 진행하기 전에 유형 검사를 시행하므로 로깅 기능과 같이 모든 유형의 입력을 허용하는 기능에 유용합니다.

절대 유형

never 유형은 빈 값 집합을 나타내며, 어떤 일이 발생해서는 안 된다는 것을 나타냅니다. Never 유형에는 값을 할당할 수 없으므로 철저한 검사와 도달할 수 없는 코드를 나타내는 데 유용합니다.

type User = { type: "admin" } | { type: "standard" };

function handleUser(user: User) {
  switch (user.type) {
    case "admin":
      // handle admin
      break;
    case "standard":
      // handle standard
      break;
    default:
      const _exhaustiveCheck: never = user;
      // This ensures all cases are handled
  }
}

새 사용자 유형이 추가되면 TypeScript는 오류를 발생시켜 모든 사례가 처리되었는지 확인하므로 코드에서 철저한 검사를 유지하는 데 결코 중요하지 않습니다.

결론

알 수 없는 모든 것을 이해하면 TypeScript의 유형 안전성이 향상되지 않습니다. 보다 안전한 유형 검사를 위해서는 알 수 없음을 선호하고, 철저한 검사와 접근할 수 없는 코드에는 절대 활용하지 마십시오. 이러한 유형을 올바르게 사용하면 TypeScript를 안정적인 애플리케이션을 구축하기 위한 강력한 도구로 만들 수 있습니다.
즐거운 코딩하세요!

위 내용은 TypeScript의 &#any&#, &#unknown&# 및 &#never&# 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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