사용자 도구

사이트 도구


typescript:datatype

TypeScript Data Type

TypeScript는 data type을 체크합니다. 아래의 코드는 에러입니다.

let myColorStr: string = Color.Green;

boolean

  • boolean : primitive data type
  • Boolean : primitive wrapper object

number

  • 정수와 실수를 구분하지 않습니다. 둘 다 floating point values입니다.

string

  • double quotes(“)와 single quotes(')둘 다 이용할 수 있습니다. single quotes를 주로 사용
  • String : wrapper 생성자함수
  • backquotes(`)를 이용하여 여러 줄을 입력할 수 있습니다.

Array

  • primitive data type이 아닌 객체입니다.

Tuple

  • 배열입니다. 특수한 형태의 배열로 인식하시면 됩니다.
  • 배열의 각 원소에 대해 각기 다른 data type을 허용합니다.
  • let myTuple: [string, number];
    myTuple = ["Hello", 100]; // 가능
    myTuple = ["Hello", "World"]; // 에러

enum

  • C#의 enum과 동일합니다.
  • enum Color { Red = 1, Green, Blue = 4 }
    let myColor: Color = Color.Green;
    console.log(myColor);   // 2 출력
     
    myColor = Color.Blue;
    console.log(myColor);   // 4 출력

any

  • 어떠한 data type도 될 수 있다.(당연히 사용하지 않는 것이 좋습니다.)

unknown

any 타입은 타입스크립트에서 가장 할 수 있는 일이 많은(most-capable) 타입입니다. 어떤 타입이든 수용할 수 있으면서도 우리가 호출하거나 그 속성에 접근하려고 할 때 타입체킹을 하지 않아도 됩니다. 또한 any 타입의 값은 다른 어떤 타입에도 대입할 수 있습니다. 보통은 이런 점이 매우 유용하지만 어떤 때는 이런 점 때문에 우리는 약간 태만해지기도 합니다.

어떤 때는 가장 할 수 있는 일이 없는(least-capable) 타입을 사용하고 싶을 때도 있습니다. 이는 API에서 이런 신호를 주고 싶을 때 유용합니다. “이것은 어떤 값이든 될 수 있으니 사용 전에 어떤 타입인지 확인하십시오” 이렇게 하면 사용자들은 반환된 값을 안전하게 검사해보게 됩니다.

타입스크립트 3.0에서는 위에서 언급한 일들을 해주는 unknown이라는 새로운 타입이 도입됩니다. any와 마찬가지로 어떤 값이든 unknown에 할당될 수 있습니다. 하지만 any와는 다르게 unknown 타입을 가진 값의 속성에는 접근할 수 없으며 호출하거나 인스턴스(instance)를 만들 수도 없습니다. 또한 unknown 타입의 값은 unknown이나 any에만 할당될 수 있습니다.

대신에 우리는 타입체킹을 수행하거나 타입 시스템에게 우리가 이 타입에 대해 더 잘 알고 있다고 말해줘야 합니다.

<Code typescript> let foo: unknown = 10; function hasXYZ(obj: any): obj is { x: any, y: any, z: any } {

  return !!obj &&
      typeof obj === "object" &&
      "x" in obj &&
      "y" in obj &&
      "z" in obj;

} Using a user-defined type guard… if (hasXYZ(foo)) { …we're allowed to access certain properties again.

  foo.x.prop;
  foo.y.prop;
  foo.z.prop;

} We can also just convince TypeScript we know what we're doing by using a type assertion. upperCase(foo as string); function upperCase(x: string) {

  return x.toUpperCase();

} </Code>

void

  • function에서 사용 합니다.
  • 여기서 주의해야 할 점은 tsconfig.json파일안에 compilerOptions 부분에 “strictNullChecks”: false option을 설정해야 한다는 것입니다.

null & undefined

  • TypeScript에서 null과 undefined는 값이자 하나의 data type입니다. 그렇기 때문에 다음과 같이 사용해야 합니다.
  • 여기서 주의해야 할 점은 만약 –strictNullChecks flag를 이용해 .ts파일을 컴파일 할 경우 null과 undefined는 void 혹은 자신의 data type에만 assign될 수 있게됩니다. (tsconfig.json파일안에서 “strictNullChecks”: true로 설정한 경우를 의미 )
  • “strictNullChecks” : true 적용된 경우
    let myName: string = "홍길동";
    let myVoid: void;
    let myNull: null;
    let myUndefined: undefined;
     
    myName = null;            // 불가능
    myName = undefined;       // 불가능
     
    myVoid = null;            // 불가능
    myVoid = undefined;       // 가능
     
    myNull = null;            // 가능
    myNull = undefined;       // 불가능
     
    myUndefined = null;       // 불가능
    myUndefined = undefined;  // 가능

never

  • never type은 일반적으로 함수의 리턴 타입으로 사용됩니다. 만약 함수의 리턴 type으로 never가 사용되면 해당 함수는 항상 exception을 발생시키던가 혹은 절대 return되지 않는다는 것을 의미합니다. 절대 return되지 않는다는 것은 무한 loop에 빠지는 것등을 의미합니다.
  • function error(message: string): never {
        throw new Error(message);
    }
    error("Something Wrong!!");
     
     
     
    function infiniteLoop(): never {
        while (true) {
     
        }
    }

type assertions

  • Type assertions는 컴파일러에게 “이 타입 사용이 맞아!!”라는 의미를 전달하는 것입니다. Type assertions 은 type casting과 같은 의미로 사용되지만 실제 특별한 체크작업이나 데이터 재구조화 작업이 발생하지 않습니다. TypeScript는 프로그래머가 특정한 type check를 진행했다고 가정한 후 컴파일을 진행합니다. ( TypeScript가 따로 검증하지 않는다는 거죠. )
  • <>(angle-bracket)을 이용하는 방법
  • as를 이용하는 방법
  • let myVar: any = "Hello World";
     
    let myVarCount: number = (<string>myVar).length;
     
    myVarCount = (myVar as string).length;
     
    console.log((<number>myVar).toFixed());  // runtime error
typescript/datatype.txt · 마지막으로 수정됨: 2025/04/15 10:05 저자 127.0.0.1