Post

타입스크립트 - 타입스크립트 - 함수/인덱스시그니처

타입

● boolean

1
2
let boolean: boolean;
let falseBoolean: boolean = false;

● number

1
2
3
let number: number;
let integer: number = 6;
let float: number = 1.2345;

● string

1
2
let string: string;
let firstName: string = "hyemin";

● array

1. 한가지 타입만 가지는 배열

1
2
let names1: string[] = ["John", "Kim"];
let names2: Array<string> = ["John", "Kim"];

2. 여러 타입을 가지는 배열 (유니온 타입 사용)

1
2
let array1: (string | number)[] = ["Kim", 10];
let array2: Array<string | number> = ["Kim", 10];

3. 여러 타입을 단언할 수 없을 때 (any)

1
let someArr: any[] = ["Kim", 1, [], {}, false];

4. 타입별칭, 인터페이스 사용

1
2
typeof Array = string[]
let array2: Array = ["Kim", 'lee'];

5. 읽기 전용 배열 생성(readOnly, ReadonlyArray)

1
2
let stringArr: readonly string[] = ["kim", "lee"];
let numberArr: ReadonlyArray<number> = [15, 18, 20];

● Tuple

1
2
3
4
5
6
let tuple1: [string, number];
tuple1 = ["a", 1];

// ERRROR!!!
tuple1 = ["a", 1, 3]; // 개수가 다름
tuple1 = [1, "a"]; // 순서가 다름

배열 안에 배열도 타입 지정 가능

1
2
3
4
5
let users: [number, string][];
users = [
  [15, "kim"],
  [20, "lee"]
];

메소드를 이용하여, 값을 넣기 가능!

1
2
3
4
5
let tuple2: [string, number];
tuple2 = ["a", 1];
tuple2.push(2);

console.log(tuple2); // ["a", 1, 2];

하지만 타입 안에 없는 값은 넣을 수 없음!!

1
2
3
4
5
let tuple2: [string, number];
tuple2 = ["a", 1];
tuple2.push(false);

// tuple2에는 string과 number 타입만 있고, boolean 타입은 없기 때문에 오류 발생

● any

어떤 타입이어도 상관없는 타입 (사용 지양)

1
2
3
let any: any = "abc";
any = 1;
any = [];

● unknown

any와 같이 어떤 타입이어도 할당 가능한 타입

1
let unknown: unknown = false;

any와는 다르게 다른 변수에 할당할 수 없음!

1
2
let string1: string = unknown;
let number1: number = unknown;

● object

1
2
3
4
5
let obj: object = {};
let arr: object = [];
let date: object = new Date();

const obj1: { id: number; title: string } = { id: 1, title: "타이틀1" };

자바스크립트에서의 null은 object 타입이라 object를 할당할 수 있으나,
tsconfig.json 파일에서 컴파일 옵션 - strict을 true값으로 설정한다면 오류가 발생함!

1
let null:object = null

● Union

여러 타입을 정의할 때 사용

1
2
3
let union: string | number;
union = "string!!";
union = 123;

● function

function에 직접 타입을 작성할 수 있음

1
2
3
4
5
let func1: (arg1: number, arg2: number) => number;

func1 = function (x, y) {
  return x * y;
};

return 값이 없다면 void 할당

1
2
3
4
5
let func2: () => void;

func2 = function () {
  console.log("Hi~");
};

● null, undefined

tsconfig.json 컴파일 옵션 - strictNullChecks가 false라면 오류가 발생하지 않음

1
2
3
4
5
6
let number1:number = undefined
let string9: string = undefined
let object9: {a:10,b:false} = undefined
let null: undefined = null
let null1: null =undefined
let void1: void = null

void에는 undefined 값 할당 가능

1
let void2: void = undefined;

● void

실제로 반환하는 값은 undefined

1
2
3
function greeting(): void {
  console.log("hi");
}

● never

return하는 값이 없을 때 사용

1
2
3
4
5
6
7
8
9
function throwError(): never {
  throw new Error("error");
}

function keepProcessing(): never {
  while (true) {
    console.log("무한루프");
  }
}
This post is licensed under CC BY 4.0 by the author.