studye / typescript

타입스크립트는 자바스크립트랑 다른 언어인가요?
7 stars 0 forks source link

[Chapter2] Advanced Types #5

Open sculove opened 7 years ago

sculove commented 7 years ago

Union Types

|으로 여러 타입을 지정. 심지어 타입 뿐만 아니라 값도 가능함.

var union: string | number;
var unionValue: string | 10;

Type aliases

type 키워드로 사용자 타입형태를 지정할 수 있다.

type StringOrNumber = string | number;
type StringOr10 = string | 10;

function addWithUnion(a: StringOrNumber, b: StringOr10) {
}

undefined 와 null

javascript에서도 다른 primitive 타입이기 때문에, 구분하여 타입을 지정해야한다.

let x : number | null | undefined;
junthus commented 7 years ago

number 타입을 지정하고 null이나 undefined를 넣으면 에러가 안나요. 완전 궁금해요

junthus commented 7 years ago

type에서 interface도 | 가 가능해요?

sculove commented 7 years ago

아래 같이 type 을 이용하여 지정할 수 있는데, 정작 implements에서는 동작하지 않음.

interface A {
  methodA(a:string, b:string): string;
}

interface B {
  methodB(a:string, b:string): string;
}

type C = A | B;

class Klass implements C { // error. A class may only implement another class or interface.
  methodA(a:string, b:string) {
    return a + b;
  }
  methodB(a:string, b:string) {
    return a + b;
  }
}

그냥 interface 본래의 의미를 사용하는 게 바람직할것 같네요.

class Klass implements A, B {
  methodA(a:string, b:string) {
    return a + b;
  }
  methodB(a:string, b:string) {
    return a + b;
  }
}