如何使返回类型成为参数类型的函数

问题描述 投票:0回答:0

我正在尝试找出一个函数的 Typescript,该函数采用键值对字典,其中值为 Promise。并返回键值对的字典,其中值是已解析的 Promise。我认为下面的代码适用于此。 IArg 和 IResult 接口不会抛出任何错误。

    interface IArg{ [key: string]: Promise<any> }
    interface IResult{ [key: string]: any extends Promise ? never : any}

    public async promiseProps(obj: IArg): Promise<IResult>{
        return Promise.all(Object.values(obj)).then(
            (values) => {
                const keys: string[] = Object.keys(obj);
                const length = keys.length;
                const d: IResult = {};
                for(let i = 0; i < length; i++){
                    d[keys[i]] = values[i];
                }
                return d
            }
        )
    }

但是我无法弄清楚的是如何指示对于特定键,该键的返回类型是已解决承诺的类型。

例如如果我的arg是(满足IArg定义的类型):

{
    foo: Promise<string>,
    bar: Promise<int>,
}

我要我的返回类型保证返回值满足:

{
    foo: string,
    bar: int,
}

我当前的返回值只保证值不是 Promises。谢谢!

typescript typescript-generics
© www.soinside.com 2019 - 2024. All rights reserved.