Flowjs-具有泛型类型参数的方法在被调用时不接受参数

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

我无法理解为什么我的模拟对象对象常量不被接受为我的通用registerDataService方法调用的参数。

在此失败:

registerDataService(mockPG)

我回来的错误:

无法将绑定了嘲笑PG的registerDataService绑定到pgPool,因为对象文字1与属性查询的返回值的类型参数R [3]中的T [2]不兼容

这里的任何指针都很好。

我的代码

注册数据服务单元测试

  const mockPG = {
       query: (sql: string, args: Array<?string>) => new Promise((resolve) 
        => {
            resolve({
             rows: [
             {
              usernameAvailable: false,
              alternativeUserName: ['ray1', 'ray_22', 'ray_786']
             }
            ]
           });
          }).then((res) => res)
       };
  }

registerDataService(mockPG)  //  **<-- error here with mockPG:**  

enter image description here

RegisterDataService文件

type pgPoolType<T> = {
  query: <T>(sql: string, args: Array<?string>) => Promise<T>
};

const validateNewUserNameAsync = (userName: string, pgPool: pgPoolType<pgPoolQueryResponse<row>>): 
                                 Promise<validateNewUserNameAsyncResponse> => {}

const registerUserAsync = (userDetails: ud, userStatusId: string, authUrl: string,             
                          pgPool: pgPoolType<pgPoolQueryResponse<registernRow>>
                          ): Promise<registerUserAsyncResponse> => { }


module.exports = (pgPool: pgPoolType<any>) => ({
   validateNewUserNameAsync: (userName: string) => validateNewUserNameAsync(userName, pgPool)
   registerUserAsync: (userDetails: ud, userStatusId: string, authUrl: string) => 
                       registerUserAsync(userDetails, userStatusId, authUrl, pgPool)
});
javascript reactjs flowtype
1个回答
0
投票

我设法使它起作用。

我在查询功能中犯了一个错误:

 type pgPoolType<T> = {
   query: <T>(sql: string, args: Array<?string>) => Promise<T>
 };

通过删除查询函数开始处的t,因为我改用pgPoolType。

   type pgPoolType<T> = {
       query: (sql: string, args: Array<?string>) => Promise<T>
   };
© www.soinside.com 2019 - 2024. All rights reserved.