typescript 返回类型约束
function parse<T>(list: string | any[]) {
// do something
}
有上面这么一个函数,用于解析字符串,可以接收一个字符串或者数组,如果输入的是字符串, 给定T类型作为返回类型,如果不是字符串,则返回传入参数的类型(数组), 这样的约束应该怎么实现
回答
你的需求是通过输入参数的类型来决定返回值类型,这个需求是无法实现的,因为ts的类型检查都是静态类型,只作用于ts编译阶段。
通过给定泛型T来指定返回值类型是没有意义的,你的函数功能是进行字符串处理,那么返回的类型应该是固定的,或者跟随输入的参数类型(string或any[])
你可以换个思路,我们应该在调用的时候尽可能知道传入参数的类型,这样就可以使用T来标记参数与返回类型,如:
function parse<T>(list: T): T {
// do something
}
如果说不能确定传入的是字符串还是数组,那就加入一些逻辑进行处理,将返回结果统一成string或者any[]