타이프 스크립트에서 비동기 함수 유형을 정의하는 방법
비동기 함수의 종류를 정의하려고 했지만 컴파일하지 못했습니다.다음을 참조해 주십시오.
interface SearchFn {
async (subString: string): string;
}
class A {
private Fn: SearchFn
public async do():Promise<string> {
await this.Fn("fds") // complain here: cannot invoke an expression whose type lacks a call signature
return ''
}
}
누가 나 좀 도와줄래?
이 기능은 함수의 반환 유형을 Promise로 선언하면 작동합니다.
interface SearchFn {
(subString: string): Promise<boolean>;
}
또는 형식 선언:
type SearchFn = (subString: string) => Promise<boolean>;
마이크로소프트의 TS Linter는 이 두 번째 구문을 권장합니다.
그async
키워드는 문제의 함수가 사용하는 것을 컴파일러/컴파일러에 나타내기 위해 사용됩니다.await
(이를 가능하게 하기 위해 필요한 발판을 설치할 수 있습니다.)
즉,async
함수의 구현에만 의미가 있으며 인터페이스의 의미는 없습니다.따라서,async
인터페이스의 메서드가 유용하지 않은 경우 함수가 특정 값을 반환한다고 가정합니다.Promise
(고객님의 경우)Promise<string>
단, 인터페이스의 실장자가 특정 방법으로 이것을 실장하도록 강제하는 것은 원하지 않습니다(사용하는 방법).await
).
그래서 다른 사람들이 내 앞에서 말했듯이:
interface SearchFn {
(subString: string): Promise<string>;
}
그 후, 이 기능을 실장하는 것을 선택하는 사람은, 모두, 이 기능을 사용하는 것을 선택할 수 있습니다.async
, 플레인 올드Promise.then
아니면 미래에 나올 새로운 방법론일 수도 있습니다.
반환된 오브젝트의 유형을 Promise 범용에 전달합니다.
type SearchFn = (subString: string): Promise<string>;
다른 방법으로 선언할 수 있습니다.AsyncFunction
범용 타입
type AsyncFunction <A,O> = (...args:A) => Promise<O>
type SearchFn = AsyncFunction<[string], string>
AsyncFunction은 입력(A) 유형과 출력 유형의 두 가지 유형 변수를 수신하는 범용 유형입니다.
언급URL : https://stackoverflow.com/questions/38744159/in-typescript-how-to-define-type-of-async-function
'programing' 카테고리의 다른 글
차트JS 꺽은선형 차트 - 선 아래 색 제거 (0) | 2023.02.28 |
---|---|
웹 API 복합 매개 변수 속성이 모두 null입니다. (0) | 2023.02.28 |
태그 배열 정렬 문제 (0) | 2023.02.28 |
그렇지 않으면 Angular에 있는 문JS 템플릿 (0) | 2023.02.28 |
Java - 예외의 첫 번째 원인을 찾습니다. (0) | 2023.02.28 |