Basic type

Cheddaryeon·2023년 7월 27일

변수란?

: 프로그래밍 언어에서 변수는 데이터를 저장하는 공간이다

변수와 타입

: 변수에 저장되는 데이터는 여러 가지 타입이 있다
ex) 숫자, 문자열, 논리값, 배열, 객체 등

튜플

: 서로 다른 타입의 원소를 순서에 맞게 가질 수 있는 특수한 형태의 배열

튜플과 배열의 차이

  • 배열은 number[], string[] 처럼 같은 타입의 원소만 가질 수 있다
    • const testScores: number[] = [90, 85, 78, 92, “88”];
      • 위의 코드처럼 마지막 원소를 string 타입으로 넣으면 에러가 발생한다
      • 숫자만 넣어줘야 합니다. 즉, 같은 타입의 원소만 취급할 수 있다
  • 하지만, 튜플은 어떤 타입의 원소를 허용할 것인지 정의만 해주면 된다
    const person: [string, number, boolean] = ['Spartan', 25, false];
    const person2: [string, number, boolean] = [25, 'Spartan', false]; // 오류!

enum?

* 명확하게 관련된 상수 값들을 그룹화하고자 할 때 사용하는 게 좋다

  • enum열거형 데이터 타입
  • 다양한 상수를 보다 더 이해하기 쉬운 문자열 이름으로 접근하고 사용할 수 있게 하는 타입이다
  • enum 안에 있는 각 요소는 값이 설정되어 있지 않으면 기본적으로 숫자 0으로 시작한다
  • enum 안에 있는 요소에는 number 혹은 string타입의 값만을 할당할 수 있다.

readonly?

  • readonly는 TypeScript에서 등장한 키워드
  • 객체의 속성을 불변으로 만드는 데 사용되는 키워드
  • 즉, 클래스의 속성이나 인터페이스의 속성을 변경할 수 없게 만들 수 있다.

any?

  • TypeScript에서 any 타입은 모든 타입의 슈퍼 타입이다
  • 이는 어떤 타입의 값이든 저장할 수 있다는 의미
  • JavaScript의 object 타입과 같은 최상위 타입이라고 생각하면 된다
    let anything: any;
    anything = 5; // 최초에는 숫자를 넣었지만
    anything = 'Hello'; // 문자열도 들어가고요
    anything = { id: 1, name: 'John' }; // JSON도 들어가네요

!!! any 타입은 코드의 안정성과 유지 보수성을 저해할 수 있다. 가급적 사용을 하지 않는것이 좋다 !!!

unknown?

  • unknown 타입은 any 타입과 비슷한 역할을 하지만 더 안전한 방식으로 동작한다
  • unknown 타입의 변수에도 모든 타입의 값을 저장할 수 있다
  • 하지만, 그 값을 다른 타입의 변수에 할당하려면 명시적으로 타입을 확인해야 한다
let unknownValue: unknown = '나는 문자열이지롱!';
console.log(unknownValue); // 나는 문자열이지롱!
let stringValue: string;
stringValue = unknownValue; // 에러 발생! unknownValue가 string임이 보장이 안되기 때문!
stringValue = unknownValue as string;
console.log(stringValue); // 나는 문자열이지롱!
  • stringValue = unknownValue as string; 코드를 Type Assertion(타입 단언)이라고 한다
  • unkwown 타입의 변수를 다른 곳에서 사용하려면 타입 단언을 통해 타입 보장을 하여 사용할 수 있다
let unknownValue: unknown = '나는 문자열이지롱!';
let stringValue: string;
if (typeof unknownValue === 'string') {
  stringValue = unknownValue;
  console.log('unknownValue는 문자열이네요~');
} else {
  console.log('unknownValue는 문자열이 아니었습니다~');
}
//결과값 > unknownValue는 문자열이네요~
  • typeof 키워드를 이용하여 타입 체크를 미리한 후 unknown 타입의 변수를 string 타입의 변수에 할당할 수 있다

union?

  • union여러 타입 중 하나를 가질 수 있는 변수를 선언할 때 사용
  • union은 | 연산자를 사용하여 여러 타입을 결합하여 표현한다
    type StringOrNumber = string | number; // 원한다면 | boolean 이런식으로 타입 추가가 가능해요!
    function processValue(value: StringOrNumber) {
      if (typeof value === 'string') {
        // value는 여기서 string 타입으로 간주됩니다.
        console.log('String value:', value);
      } else if (typeof value === 'number') {
        // value는 여기서 number 타입으로 간주되구요!
        console.log('Number value:', value);
      }
    }
    processValue('Hello');
    processValue(42);
    //결과값 > String value: Hello
    //		> Number value: 42
profile
study frontend

1개의 댓글

comment-user-thumbnail
2023년 7월 27일

많이 배우고 보고 갑니다 ....

답글 달기