2017-11-21 5 views
3

Typescript는 객체의 모든 필드를 선택적으로 만드는 데 도움이되는 Partial<Object> 유형을가집니다. 내가 타이프 라이터 인터페이스를 통해 설명 된 동기 API를약속에 대한 인터페이스에서 필드 유형 바꾸기

interface PromisifyPerson { 
    getName(): Promise<string>; 
    getAge(): Promise<number>; 
} 

:

interface Person { 
    getName(): string; 
    getAge(): number; 
} 

에 :

는에서 Person 유형을 변경하는 제네릭 형식 Promisify<Person>을 만들 수있는 같은 방법으로 가능 내 목표는 모든 인터페이스를 다시 작성하지 않고 비동기 API 버전을 만드는 것입니다. 나는 그것이 몇 가지 작업을 할 수 있지만 당신이 그것을 만들 수 있습니다 확신

interface AsyncApplicationApi { 
    startApp(): Promise<void>; 
    readFile(fileName): Promise<string>; 
} 
+0

왜 Promise에 로컬 값을 래핑 하시겠습니까? 이는 아무런 이유없이 추가 오버 헤드를 추가합니다. –

+0

필자는 Typescript 인터페이스를 통해 API를 설명했습니다. 이것은 데스크톱 응용 프로그램 용 API이며 거의 모든 메서드가 동기식입니다. 이제이 API에 대한 원격 클라이언트를 만들어야하며 기존 인터페이스를 다시 사용하고 싶습니다. 그러나 원격 클라이언트는 API를 비동기 적으로 호출합니다. 그래서 async async API 인터페이스를'type AsyncApplicationAPI = Async '와 같은 것으로 비동기식으로 변환하려고 생각합니다. –

+0

각 속성 대신 API 호출의 모든 값을 반환하지 않는 이유가 혼란 스럽습니다. * (아약스를 통해이 사람의 이름을 알게하십시오 ... 이제 다른 아약스 전화를 통해이 같은 사람의 나이를 갖도록하겠습니다). 왜 '약속이 '이 아닌 사람이 필요한가요? –

답변

0

: 나는 AsyncApplicationAPI가 뭔가를해야한다는 기대 그 이후

interface ApplicationApi { 
    startApp(): void; 
    readFile(fileName): string; 
} 

type AsyncApplicationAPI = Async<ApplicationApi> 

: 이것은 또 다른 예이다. 주어진 객체의 모든 속성을 반복하고, 약속에서 래핑되는 데이터 멤버와 약속을 반환하는 새 함수로 래핑 된 함수를 제외하고는 동일한 객체를 반환하는 함수를 만들면됩니다. 물론 객체 속성의 모든 속성이 약속에 싸여 지길 원한다면 세부 사항에 대해 걱정해야합니다.

편집 : 내 대답에 따라 인스턴스를 전달할 수 있습니다. 개체의 및 인스턴스 다시 약속을 얻을. 언어 자체에서 일반적으로 유형에 대해이를 수행하지 못할 수도 있습니다.

+0

예, 객체의 모든 필드를 약속으로 대체하는 함수를 만드는 것은 어렵지 않습니다. 그러나 내 목표는 다른 유형을 기반으로 유형을 만드는 것입니다. –

+0

아, 그래. 이것은 매우 심오한 질문입니다. 컴파일러에서 언어 외부에서 정의해야한다고 생각합니다. 아마도 Github 페이지에서 Typescript 사용자와 더 직접적으로 관련이있을 수 있습니까? – setholopolus

+0

불행히도 그들의 github 페이지는 말합니다 : 이것은 포럼이 아닙니다 - 귀하의 질문에 "stackoverflow"를 사용하십시오 –

관련 문제