2016-11-25 2 views
1

대 인터페이스 나는 다음과 같은 기능이 있습니다유효성 검사 함수 서명 - 타입 별칭

function (n: number) { 
    return {s: n}; 
} 

내가 서명에 대한 유효성 검사기를 작성해야합니다. 내가 읽은 바로는 저는 두 가지 옵션이 있습니다 :

인터페이스를

interface ValidatorFnInterface { 
    (n: number): { 
     [key: string]: any; 
    }; 
} 

유형 별칭

type ValidatorFnType = (n: number) => { 
    [key: string]: any 
}; 

그리고 그들은 다음과 같이 사용할 수 있습니다

let f1: ValidatorFnInterface = function (n: number) { 
    return {s: n}; 
}; 

let f2: ValidatorFnType = function (n: number) { 
    return {s: n}; 
}; 

Typescript lib.d.ts은 형식 별칭을 사용하는 반면 angular2 코드는 인터페이스를 사용하는 것 같습니다. 내 질문은 언제 무엇을 사용 하는가? 내가 결정할 때 사용해야 할 논리가 있거나 선호의 문제입니까?

답변

3

현재 TypeScript의 클래스는 임의 유형이 아닌 interfaces 만 구현할 수 있습니다. 그래서 일반적으로 다른 클래스가 당신의 타입을 뭔가 구현할 수 있도록하려면 인터페이스를 사용해야합니다. 마찬가지로 다른 인터페이스로만 extend을 인터페이스 할 수 있습니다.

인터페이스의 부정적 측면에서는 교차 또는 합집합 유형을 표현할 수 없으므로 하나의 단일 유형으로 사용하려면 유형 별명이 필요합니다.

+0

감사합니다. 그렇다면 함수 서명 유효성 검사를 위해 인터페이스에 충실하겠다고 말하면 되겠습니까? –

+0

@ Maximus 귀하의 요구 사항에 따라 다릅니다. 나는 개인적으로 타입 앨리어스로 내 타입을 표현하기를 좋아한다. 그러나 인터페이스는 아마 더 안전하고 더 재사용이 가능합니다. 덕분에 – Alex

+0

. 입력 별칭은 나중에 인터페이스 언어보다 언어에 나타 났습니까? 어쩌면 angular2가 인터페이스를 사용하는 이유 일 수 있습니다. 또한 [이] (http://stackoverflow.com/questions/13137350/defining-typescript-callback-type#comment47535906_14249517)에 대한 의견은 무엇이라고 말할 수 있습니까? –

관련 문제