下面是我正在处理的项目中类型的抽象版本。
// types.ts
interface Methods {
request<T>(params: RequestParams): Promise<T>;
}
// implementation.ts
public request: Methods["request"] = async <T>(params) => {
// ...
};
我原以为我可以像上面那样访问<T>
,但是一旦我添加它,params
就会变成非类型化/任何原因。
发布于 2022-05-23 09:10:30
使用泛型类型编写赋值时,TypeScript不会从变量类型推断赋值的类型。它只是根据鸭子类型规则验证赋值类型(<T>(params: any): Promise<T>
)与变量类型(<T>(params: RequestParams): Promise<T>
)是否兼容。
因此,您不应该期望自动输入params
,但是您应该自己键入它:
// types.ts
interface Methods {
request<T>(params: RequestParams): Promise<T>;
}
// implementation.ts
public request: Methods["request"] = async <T>(params: RequestParams) => {
// ...
};
https://stackoverflow.com/questions/72351793
复制相似问题