typescript - typescript - 将类型传递给函数参数
问题描述
我还是打字稿的新手,但我正在尝试将自定义类型传递给函数。在这种情况下,我避免使用“任何”,这是我的示例。
interface ReturnObj<T> {
returnObj: T | null
}
const createResultObj = (
isSuccessful: boolean = false,
returnObj: ReturnObj = null,
errors: AppError | null = null,
statusCode: number = 500
): Result => {
return {
isSuccessful,
returnObj,
errors,
statusCode
}
}
当然,这会返回一个错误,Generic type 'ReturnObj<T>' requires 1 type argument(s).
但我不确定如何填写这部分,以便我可以调用此函数并在 returnObj 中存在某些内容时包含类型。
解决方案
您所需要做的就是为您的函数提供一个通用参数,如下所示:
interface ReturnObj<T> {
returnObj: T | null
}
type AppError = {} | null
type Result<T extends unknown> = {
isSuccessful: boolean,
returnObj: ReturnObj<T> | null,
errors: AppError,
statusCode: number
}
const createResultObj = <T extends unknown>(
isSuccessful: boolean = false,
returnObj: ReturnObj<T> | null = null,
errors: AppError = null,
statusCode: number = 500
): Result<T> => {
return {
isSuccessful,
returnObj,
errors,
statusCode
}
}
type sth = { foo: string };
const s: sth = { foo: "bar" }
const returnS: ReturnObj<sth> = { returnObj: s }
const re = createResultObj(true, returnS, null, 200);
console.log(re);
注意:<T extends unknown>
由于箭头功能的使用,这是一项义务,请参阅此
推荐阅读
- .htaccess - htaccess 两个端点显示相同
- python - 如何在optionmenu tkinter python中交换值?
- javascript - 在选项卡按钮 java 脚本上添加分页| 选项卡中 UL 列表中的下一个和上一个
- sql - 使用所有 3 个表共有的列连接 3 个表
- javascript - React:数组值在 map() 中未定义
- javascript - Angular 6 - 未检测到匹配的服务工作者
- python - “UnboundLocalError:局部变量'?' 在赋值前引用“大量迭代错误
- javascript - 当我多次运行该函数时,有没有办法保留使用 Math.random 生成的变量
- matlab - 无法解决 Simulink FOC 模型中的端口尺寸错误
- mysql - 在 mySQL 中自动递减一个值