【发布时间】:2018-05-05 12:22:17
【问题描述】:
Typescript 具有 Partial<Object> 类型,有助于使对象的所有字段都是可选的。
是否有可能以同样的方式创建一个泛型类型Promisify<Person> 来改变Person 类型:
interface Person {
getName(): string;
getAge(): number;
}
到:
interface PromisifyPerson {
getName(): Promise<string>;
getAge(): Promise<number>;
}
我有一个通过 Typescript 接口描述的同步 API,我的目标是创建 API 的异步版本,而无需重写我拥有的所有接口。这是另一个例子:
interface ApplicationApi {
startApp(): void;
readFile(fileName): string;
}
type AsyncApplicationAPI = Async<ApplicationApi>
之后我希望 AsyncApplicationAPI 应该是这样的:
interface AsyncApplicationApi {
startApp(): Promise<void>;
readFile(fileName): Promise<string>;
}
【问题讨论】:
-
为什么要将本地值包装在 Promise 中?这无缘无故地增加了额外的开销。
-
我有一个通过 Typescript 接口描述的 API。这是桌面应用程序的 API,几乎所有方法都是同步的。现在我必须为这个 API 创建一个远程客户端,并且我想重用已经存在的接口。但是远程客户端会以异步方式调用API。所以我考虑将同步 API 接口转换为异步接口,例如 `type AsyncApplicationAPI = Async
` -
我想我很困惑为什么你不会返回 API 调用中的所有值而不是每个 property (让我通过 ajax 获取此人的姓名。 .. 现在让我通过另一个 ajax 调用来获取同一个人的年龄)。如果我需要一个人,为什么不
Promise<Person>? -
我刚刚添加了一些描述。我已经有大量的 API 接口,现在很难重写。我的目标是在不更改原始 API 的情况下创建一个异步版本的 API。
标签: typescript generics asynchronous interface promise