"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > TypeScript의 &#any&#, &#unknown&# 및 &#never&# 이해

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

2024-08-07에 게시됨
검색:907

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를 안정적인 애플리케이션을 구축하기 위한 강력한 도구로 만들 수 있습니다.
즐거운 코딩하세요!

릴리스 선언문 이 글은 https://dev.to/sharoztanveer/understanding-any-unknown-and-never-in-typescript-4acb?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3