我想知道以下表达式(<T = string>() => Promise<T>)在以下上下文中是什么意思:
type Src = string | (<T = string>() => Promise<T>);
Run Code Online (Sandbox Code Playgroud)
并用于以下功能:
const handleSource = async (source: Src): Promise<void> => {
if (typeof source === 'string') {
setState((s) => ({ ...s, src: source }));
return;
}
try {
const result = await source();
setState((s) => ({ ...s, src: result }));
} catch (e) {
// eslint-disable-next-line no-console
console.warn('[Image] handleSource', e);
setState((s) => ({ ...s, isLoadingError: true }));
}
};
Run Code Online (Sandbox Code Playgroud)
这意味着Src可以是
T(默认为string)并使用该泛型参数返回一个承诺,表示如果承诺被履行,这就是履行值将具有的类型例如,您可以有一个如下所示的函数:
function example1(src: Src) {
if (typeof src === "string") {
return src;
}
return src();
}
Run Code Online (Sandbox Code Playgroud)
...返回 astring或 a Promise<string>,或者像这样:
function example2(src: Src) {
if (typeof src === "string") {
return src;
}
return src<number>();
}
Run Code Online (Sandbox Code Playgroud)
...返回 astring或 a Promise<number>(因为调用 时使用了泛型类型参数src)。
| 归档时间: |
|
| 查看次数: |
36 次 |
| 最近记录: |