如何解决typescript-将类型传递给函数参数
我对Typescript还是陌生的,但是我试图将自定义类型传递给函数。在这种情况下,我避免使用“ any”,这是我的示例。
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>
是一项义务,请参见this
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。